由于ng-repeat为每种类型/项目/迭代创建子范围,因此我们需要将每种类型的ng-model与父范围而不是子范围相关联。一种方法是使用$ parent:
<input type="checkbox" ng-model="$parent[type]">{{ type }}如果像在@Alex的答案中那样定义$
scope.types,则如果单击相应的复选框,则属性
typeOne,
typeTwo和
typeThree将出现在父作用域上,并且属性的值为
true。如果再次单击选中的复选框,该属性将保留,并且该值将切换为
false。因此,您的代码将必须检查不存在的属性以及存在的值设置为true或false的属性。有点混乱。
我希望在父作用域上预定义对象数组,其中每个对象都有类型(名称)和一个布尔值,以指示是否选择了它:
$scope.types = [ {name: 'typeOne', selected: false}, {name: 'typeTwo', selected: false}, {name: 'typeThree', selected: false}];然后,不需要$ parent(因为“ type”的值将是对父对象的引用,而不是父属性(原始)值的副本):
<input type="checkbox" ng-model="type.selected">{{ type.name }}


