我的控制器中有资源,并使用ng-repeat填充复选框 接下来我在控制器中知道要检查的东西
代码看起来像..
$scope.data = resource.query();
var arr_to_be_checked = [1,3,5];
在其他控制器中我使用它..
$scope.data = [ { Type: 1, checked: true, Title: 'Item A'},
{ Type: 2, checked: false, Title: 'Item B'}];
它的工作正常,但我需要在资源和ng-repeat上应用它,因为我需要更灵活的
我发现任何污垢但没有任何意义。请问你能帮助我吗?
我的问题是:如何使用'checked:true'覆盖资源中的对象,或将任何复选框设置为已选中。
非常感谢您的帮助或任何想法
祝你有个美好的一天
答案 0 :(得分:12)
<ul>
<li ng-repeat="item in data">
<input type="checkbox" ng-checked="item.checked"> {{item.Title}}
</li>
</ul>
<button ng-click="checkItems()">Do</button>
。
$scope.checkItems = function () {
var i;
for (i = 0; i < arr_to_be_checked.length; i++) {
data[arr_to_be_checked[i]].checked = true;
}
};
PS:请确保您的命名约定一致,javascript使用camelCase
命名约定,没有下划线。只有构造函数名为PascalCase
相关API文档:
ng-click
ng-checked
答案 1 :(得分:7)
另一种解决方案:
<div ng-controller="MainCtrl">
<label ng-repeat="(color,enabled) in colors">
<input type="checkbox" ng-model="colors[color]" /> {{color}}
</label>
<p>colors: {{colors}}</p>
<script>
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope){
$scope.colors = {Blue: true, Orange: true};
});
答案 2 :(得分:1)
<强>解强>
我从 fastreload 查看解决方案,然后像这样修改..
var arr_checked_items = [1,2,5] // this checkboxes will be set as checked
<ul>
<li ng-repeat="item in data">
<input type="checkbox" ng-checked="checkItem(item.id)"> {{item.Title}}
</li>
</ul>
。
$scope.checkItem = function (id) {
var checked = false;
for(var i=0; i<= arr_to_be_checked.length; i++) {
if(id == arr_to_be_checked[i]) {
checked = true;
}
}
return checked;
};
它的工作完美!在没有任何点击按钮的情况下加载