Javascript 选中资源和集合中的“重复”复选框
我的控制器中有资源,并用ng repeat填充复选框 我知道的下一件事是控制器中要检查的内容 代码看起来像Javascript 选中资源和集合中的“重复”复选框,javascript,angularjs,Javascript,Angularjs,我的控制器中有资源,并用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
$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重复,因为我需要更灵活
我能找到任何解决办法,但毫无意义。请问你能帮我什么人吗
我的问题是:如何使用“checked:true”来“覆盖”资源中的对象,或将任何复选框设置为选中状态。
非常感谢您的帮助或任何想法祝你度过愉快的一天
<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=函数(){
var i;
对于(i=0;i
PS:请在命名约定上保持一致,javascript使用camelCase
命名约定,没有下划线。只有构造函数被命名为PascalCase
相关API文档:解决方案
我从fastreoad查看解决方案,并进行如下修改
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>
var arr\u checked\u items=[1,2,5]//此复选框将设置为选中
-
{{item.Title}
$scope.checkItem=函数(id){
var检查=假;
对于(var i=0;i另一种解决方案:
<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};
});
{{color}}
颜色:{{colors}}
var app=angular.module('plunker',[]);
应用程序控制器('MainCtrl',函数($scope){
$scope.colors={Blue:true,Orange:true};
});
ty寻求帮助,但我的问题是,我无法在控制器中自动填充选中的属性。我知道如何使用按钮实现这一点,但我需要其他交互。我需要在加载页面上从阵列中设置选中。用户单击复选框,页面将刷新,但我知道在选中该复选框后,刷新后我将全部取消选中。我需要更改属性加载。了解我或我的英语是愚蠢的吗?如果你想让它成为自动的,最好的方法是监视你的“数据”属性,当它更改时,将项目设置为选中。监视是个好主意,但它不知道可以选中哪个复选框。它工作正常,但我不知道如何说“是此复选框可以选中”.你可以在JSFIDLE?thx fastereload point上创建一个简单的例子。好的..所以我在这里等待更好的解决方案,因为我以前被问过。如果我请求帮助,而有人来这里给我-1,我会非常难过…我从来没有说过它的最佳解决方案,但我需要工作,而不是等待-点…也许是因为你要求了一个任务ion,从@fastreload获得帮助,然后使用他的代码重新编写您的答案,而不给他任何UPVOUTS。这不是这里的工作方式。好吧……我是新来的,我想给他UPVOT ofc,但他给了我一个想法不正确的答案。我忘了他放弃VOUT。非常感谢您的回答。但我的观点是我使用的是普通数组不是对象。对象可以正常工作,但我需要设置普通数组中的复选框。如果有任何解决方案,我会倾听。我很高兴得到响应。tyEasy:只需$scope.$watch(colors)
对象并将另一个键更新为数组:)保持简单此解决方案不遵守顺序
$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;
};
<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};
});