是否可以仅在controllers.js中管理和保存复选框值(对象)?
提前致谢。
我有这个HTML代码(实体是一个对象):
<table>
<tr data-ng-repeat="entity in entities">
<td> <input type='checkbox' ng-click="toggleChecked(entity)"> {{entity.name}}</td>
</tr>
</table>
<pre>{{selectedBoxes|json}}</pre>
在我的controllers.js中我这样做了:
$scope.selectedBoxes = [];
$scope.toggleChecked = function(entity) {
if ($scope.selectedBoxes.length > 0) {
for (var box in $scope.selectedBoxes) {
if (box.name == entity.name) {
$scope.selectedBoxes.splice(box, 1);
return;
}
}
} else {
$scope.selectedBoxes.push(entity);
}
}
我无法打印此<pre>{{selectedBoxes|json}}</pre>
。
答案 0 :(得分:0)
操纵模型的角度方法实际上不鼓励使用点击来操纵模型。 我建议如下:
<table>
<tr data-ng-repeat="entity in entities">
<td> <input ng-model="entity.checked" type='checkbox'> {{entity.name}}</td>
</tr>
</table>
<pre>{{selectedBoxes()| json}}</pre>
控制器:
$scope.selectedBoxes = function() {
var selected = [];
for (var entity in $scope.entities) {
if ($scope.entities[entity].checked) {
selected.push($scope.entities[entity]);
}
}
return selected;
};
每当实体上的属性发生变化时,selectedBoxes()将重新评估哪个会自动更新html。