【问题标题】:How can change $scope value in ng-repeat?如何更改 ng-repeat 中的 $scope 值?
【发布时间】:2016-10-11 22:52:12
【问题描述】:

我有 div ng-repeat:

<div ng-repeat="a  in list" ng-click="abc = !abc">
     //some code here
     <input type="checkbox" ng-model="abc">
</div>
<button ng-click="reset()"> reset </button>

我使用 ng-model 传递值来选中/取消选中复选框。 我有一个按钮,单击它时,所有复选框都取消选中。我使用 $scope.abc=false;但没有任何改变。如何更改 ng-model 值?

【问题讨论】:

  • 能否请您也发布您的控制器代码?

标签: javascript angularjs


【解决方案1】:

复选框共享相同的模型。更改列表以包含每个对象的checked 属性,然后使用它来处理选中的对象。类似于以下内容:

<div ng-repeat="a  in list" ng-click="a.checked = !a.checked">
     //some code here
     <input type="checkbox" ng-model="a.checked">
</div>
<button ng-click="reset()"> reset </button>

【讨论】:

  • 我使用相同的模型来处理所有的检查和取消检查。因为我不想为每个对象添加选中的属性。
  • 所以,请告诉我接受的答案与我的答案有何不同。
【解决方案2】:

您的“abc”变量是一个全局变量。您必须像已经建议的那样将状态存储为每个对象的属性。

这里是一个工作示例:

HTML

  <div ng-repeat="item in list" ng-click="item.checked = !item.checked">
     <input type="checkbox" ng-model="item.checked">{{item.value}} (clickme!)
  </div>
  <button ng-click="reset()"> reset </button>

</div>

JS

var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
    $scope.list = [{value: 1}, {value: 2}, {value: 3}];
    var length = $scope.list.length;
    $scope.reset = reset;

    function reset() {

      for (var i=0; i<length; i++) {
       var item = $scope.list[i];
       item.checked = false;
      }
    }
}

(你可以看到它在行动here

【讨论】:

  • 谢谢你。我知道了。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-30
  • 2014-10-11
  • 2013-06-25
  • 2016-05-15
  • 2013-06-24
  • 1970-01-01
  • 2016-04-27
相关资源
最近更新 更多