我有一个复选框和值列表,我从一个从数据库返回的列表中加载。
控制器
listA = ['item1','item2'...'itemn']; //Master list of items
$scope.selectedItems = ["item1",... "item5"]; //selected items
$scope.attributesModel = [ //new model based on selected items
{"index":5,"attribute":"item1"},
{"index":10, "attribute":"item2"},
{"index":13, "attribute":"item3"},
{"index":21, "attribute":"item4"},
{"index":24, "attribute":"item5"}
];
查看第1部分
<td>
<div class="checkbox checkbox-notext">
<input checklist-model="selectedItems" checklist-value="key" type="checkbox" id="{{key}}" ng-disabled="exceededLimit && !checked" />
</div>
</td>
<td>
<label for="{{key}}">{{key}}{{$index}}</label>
</td>
查看第2部分
<div ng-repeat="(index, row) in attributesModel" >
<div class="margin10">
<div>Index<input ng-model="row.index" value="row.index" type="number" class="indexInputs"></input>{{row.attribute}}</div>
</div>
</div>
现在我想同步$ scope.selectedItems和$ scope.attributesModel。取消选中复选框后,selectedItems和attributesModel模型都会删除该项,反之亦然。因此,每当有人检查新复选框时,它们都会显示一个带有空文本字段的attributesModel,以键入索引值。
catch 对于添加到attributesModel的每个新选择的项,索引键最初为null。创建新项目后,用户必须输入新索引#。
我尝试过使用手表,但我遇到的问题是当选择新项目时,我无法访问该项目本身。我只能访问列表而不知道新项是X还是删除的项是Y是为了推送/删除正确的项目。
所以这可能是我失踪的手表解决方案。
如果我能澄清任何事情,请告诉我。
答案 0 :(得分:1)
我不确定问题是什么,但您可以在复选框上使用ngChange
:
<input type="checkbox" ... ng-change="..." />
我认为你有一份清单指令或其他东西,所以应该在那里做点什么,但是(因为你不与我们分享)我不知道究竟是什么:)
<强>更新强>
由于checklist
指令是外部依赖项,因此您可以在代码中处理ng-chage:
<input type="checkbox" ... ng-change="changed(key)" />
/* In the controller: */
...
$scope.changed = function (key) {
if ($scope.selectedItems.indexOf(key) === -1) {
// The checkbox for `key` was unchecked...
} else {
// The checkbox for `key` was checked...
}
};