Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 选中资源和集合中的“重复”复选框_Javascript_Angularjs - Fatal编程技术网

Javascript 选中资源和集合中的“重复”复选框

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

我的控制器中有资源,并用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重复,因为我需要更灵活

我能找到任何解决办法,但毫无意义。请问你能帮我什么人吗

我的问题是:如何使用“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> 
  • {{item.Title}
  • $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};
      });