使用ng-include遍历数组时,复选框保持状态

时间:2014-05-29 22:02:51

标签: angularjs angularjs-ng-include

我使用ng-inculde显示带有复选框的对象我的问题是如果我在同一页面中更改对象..复选框仍然保持其状态。

例如:

我有像

这样的模特
 $scope.templates = [{
    name: 'Object 1',
    url: 'template1.html',
    options:['A1','B2']},
{
    name: 'Object 2',
    url: 'template1.html',
    options:['A1','B2']}];

当所选对象是对象1并且我检查" A1"之后,我选择了选择并移动到对象2,它仍然显示A1被选中。

Detailed scenario is given in fiddle

1 个答案:

答案 0 :(得分:0)

我相当确定这不起作用,因为上面的JSFiddle对options数组值使用相同的值:

$scope.templates = [{
    name: 'Object 1',
    url: 'template1.html',
    options:['A1','B2']}
{
    name: 'Object 2',
    url: 'template1.html',
    options:['A1','B2']
}];

当AngularJS进行脏检查以确定是否需要在DOM中更新值时,它需要比较/检查内部值。在您的情况下,值为options数组的相同,因此AngularJS决定不需要对文档进行更新。

我对你的JSFiddle做了一些小改动:

  1. 使用ng-model复选框"持久性"
  2. options上的Object 2数组修改为第一个对象的唯一
  3. 将AngularJS库升级到1.2.1 (您的解决方案不需要这样做)

  4. 工作示例:http://jsfiddle.net/MasterXen/3gcqE/2/