我有一个表格,其中一列中有一个复选框。当一个复选框被选中时,我将行插入一个数组。
我试图根据下面的..真实世界更好地解释这一点
该表可以包含具有重复 ID 的行(行的列 ( flat_id ) 不同)。我上面提到的重复 id 是 user_map_id .
当我选中(单击复选框)一行时,我希望其他行具有相同的 user_map_id被禁用。
所以当一行被选中时,我存储了 user_map_id s 在一个数组中。然后我这样做:
ng-disabled="selectedUserMapIdArray.indexOf(flat.user_map_id) >= 0
即,如果 user_map_id,我将禁用该行存在于所选 user_map_id 的数组中s 但这也禁用了我选中的那个,如果我想的话我不能取消选中它。
所以我推送了flat_id s 也在数组中并这样做:
ng-disabled="selectedUserMapIdArray.indexOf(flat.user_map_id) >= 0 && selectedFlatNumArray.indexOf(flat.flat_id) < 0 "
即如果行的 user_map_id 禁用该行存在于 selectedUserMapIdArray 中(存储 user_map_id )数组并且不存在于 selectedFlatNumArray 中(存储 flat_id )
但是现在当我检查具有特定 flat_id 的行时这与重复项之一很常见 user_map_id , flat_id ,然后再次检查该组中的一个,即具有常见 flat_id 的那个不会因为 flat_id 而被禁用我在上面检查过存在于 selectedFlatNumArray 中(存储 flat_id )。
根据现实世界进行解释
表中的行是公寓所有者和居住者的列表(都有 user_map_id )。一个公寓所有者可以拥有多个公寓(因此表中有重复的 user_map_id s)。公寓所有者可以拥有多个公寓(不同的 flat_ids )。
但是屋主可以有一个住户(相同flat_id不同user_map_id)。住户可以住在业主的多个公寓之一(相同flat_id不同user_map_id)。
我希望能够检查任何公寓所有者(其他人被禁用)和居住者(如果我愿意的话)。
如果我检查与公寓所有者之一的公寓的行,则属于同一公寓所有者的其他行将被禁用并且工作正常。
但是,当我检查一个居住者所在的行,然后再次检查该居住者的公寓所有者(不具有相同的 flat_id )时,该行具有相同的 flat_id不会被禁用,因为 flat_id存在于 selectedFlatNumArray 中(存储 flat_id)
我该怎么做?
表格:
<tbody>
<tr ng-repeat="flat in someObj.flatsArray | filter:searchFlat">
<td>{{ flat.occupant_name || flat.owner_name}}</td>
<td>{{flat.flat_no}}</td>
<td class="text-center">
<input class="" name="{{flat.flat_no}}" ng-attr-title="{{(selectedUserMapIdArray.indexOf(flat.user_map_id) >= 0 && selectedFlatNumArray.indexOf(flat.flat_id) < 0) ? 'This user has been already invited' : ''}}"
ng-disabled="selectedUserMapIdArray.indexOf(flat.user_map_id) >= 0 && selectedFlatNumArray.indexOf(flat.flat_id) < 0 "
type="checkbox" ng-change="checkChanged(flat.isChecked, flat)" ng-model="flat.isChecked" />
</td>
</tr>
</tbody>
最佳答案
我觉得您的 ng-disabled 和 ng-title 应该简化,这样更容易理解。我建议删除您的数组并遍历您的原始数组,以查看当更改一个 flat 时它是否满足您的条件。调试和避免错误会更容易。
<input name="{{flat.flat_no}}"
ng-attr-title="{{flat.title}}"
ng-disabled="flat.isDisabled"
type="checkbox"
ng-change="flatChange(flat)"
ng-model="flat.isChecked" />
我建议在您更改复选框以对其他单位进行更改时遍历您的对象。请注意,这是未经测试的代码,因此可能需要进行一些调整。
$scope.flatChange = function(changedFlat) {
$scope.someObj.flatsArray.forEach(function(flat) {
if (changedFlat.checked) {
if (flat.user_map_id === changedFlat.user_map_id && flat.flat_id !== changedFlat.flat_id) {
if (changedFlat.idChecked) // If flat is checked, uncheck each one with the same `user_map_id` but not the same `flat_id`.
flat.isChecked = false;
}
flat.isDisabled = !changedFlat.checked; // `disabled` propriety is the opposite of `checked`.
flat.title = changedFlat.checked
? 'This user has been already invited'
: '';
}
});
};
关于javascript - 如果选中另一个具有相同 ID 的复选框,如何禁用复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53644580/
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
我希望我的UserPrice模型的属性在它们为空或不验证数值时默认为0。这些属性是tax_rate、shipping_cost和price。classCreateUserPrices8,:scale=>2t.decimal:tax_rate,:precision=>8,:scale=>2t.decimal:shipping_cost,:precision=>8,:scale=>2endendend起初,我将所有3列的:default=>0放在表格中,但我不想要这样,因为它已经填充了字段,我想使用占位符。这是我的UserPrice模型:classUserPrice回答before_val
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?
我有一个这样的哈希数组:[{:foo=>2,:date=>Sat,01Sep2014},{:foo2=>2,:date=>Sat,02Sep2014},{:foo3=>3,:date=>Sat,01Sep2014},{:foo4=>4,:date=>Sat,03Sep2014},{:foo5=>5,:date=>Sat,02Sep2014}]如果:date相同,我想合并哈希值。我对上面数组的期望是:[{:foo=>2,:foo3=>3,:date=>Sat,01Sep2014},{:foo2=>2,:foo5=>5:date=>Sat,02Sep2014},{:foo4=>4,:dat
我有一个正在构建的应用程序,我需要一个模型来创建另一个模型的实例。我希望每辆车都有4个轮胎。汽车模型classCar轮胎模型classTire但是,在make_tires内部有一个错误,如果我为Tire尝试它,则没有用于创建或新建的activerecord方法。当我检查轮胎时,它没有这些方法。我该如何补救?错误是这样的:未定义的方法'create'forActiveRecord::AttributeMethods::Serialization::Tire::Module我测试了两个环境:测试和开发,它们都因相同的错误而失败。 最佳答案
如果我使用ruby版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更