我需要检查两个ID列表。如果匹配则应检查该复选框。我是angularJs的新手,所以请帮助我。 我的代码现在看起来像这样。所有媒体都是具有许多价值的对象。 mediaIdFromSpecifikLead只是一个带有int id的列表。
<tr ng-repeat="media in allMedia">
<div ng-repeat="mediaFromLead in mediaIdFromSpecificLead">
<div ng-if="media.Id == mediaFromLead ">
<td>
<input type="checkbox" ng-checked="true" />
</td>
</div>
<div ng-if="media.Id != mediaFromLead ">
<td>
<input type="checkbox" ng-checked="false" />
</td>
</div>
</div>
</tr>
使用此代码,它甚至会显示两个复选框(一个已选中且一个为空),所以即使这样也无效,所以我可能完全错了。
编辑:所以我只想为每个媒体文件选中一个复选框。如果我的Lead已连接到该媒体文件,则应检查该复选框,否则应保持未选中状态。
答案 0 :(得分:11)
在那里使用ng-checked是没有意义的,因为你没有绑定到任何模型。你可以在这种情况下使用checked(你的逻辑在ng-if中):
<tr ng-repeat="media in allMedia">
<div ng-repeat="mediaFromLead in mediaIdFromSpecificLead">
<div ng-if="media.Id == mediaFromLead ">
<td>
<input type="checkbox" checked="true" />
</td>
</div>
<div ng-if="media.Id != mediaFromLead ">
<td>
<input type="checkbox" checked="false" />
</td>
</div>
</div>
</tr>
如果您想使用ng-check进行检查,则以下内容应该有效:
<tr ng-repeat="media in allMedia">
<div ng-repeat="mediaFromLead in mediaIdFromSpecificLead">
<input type="checkbox" ng-checked="media.Id == mediaFromLead" />
</div>
</tr>
如果您只想要每个媒体的复选框(而不是每个mediaFromLead)。您需要将其更改为使用控制器中的功能进行检查而不是检查。像这样:
<tr ng-repeat="media in allMedia">
<input type="checkbox" ng-checked="checkIfInMediaFromLead(media.Id, mediaFromLead)" />
</tr>
checkIfInMediaFromLead函数应该返回一个bool。
答案 1 :(得分:4)
首先删除你的ng-if条件。在这里你使用了ng-checked,然后根据你的要求以这样的方式写出你的条件,它会返回true。
<tr ng-repeat="media in allMedia">
<td ng-repeat="mediaFromLead in mediaIdFromSpecificLead">
<input type="checkbox" ng-checked="media.Id == mediaFromLead" />
</td>
</tr>
以上是乐观的解决方案。
现在,如果条件为真,则选中复选框,否则将不会选中它。
注意:这里您没有指定要比较的两个json对象的定义。请确认您的情况。