我有一个非常具有挑战性的问题,我什至不知道如何定义,所以我将举一个例子,希望你能解释我做错了什么。我的 HTML 是:
<tr ng-repeat="object in Objects">
<td>
<div table-checkbox row-index="{{$index}}" bind-model="selectedChecks[$index]" selected-Checks="selectedChecks">
</div>
</td>
</tr>
该selectedChecks
数组是这样定义控制器$scope.selectedChecks = {}
的:标记的结果是一列复选框这是我的指令代码:
return {
restrict: 'EA',
scope: {
rowIndex: '@',
selectedChecks: '=',
bindModel: '='
},
template:'<input type="checkbox" ng-model="bindModel" ng-change="checkit(rowIndex)">',
link: function(scope, elem, attrs) {
scope.checkit = function(i){
alert(scope.bindModel + " " + scope.selectedChecks[i]);
};
}
};
问题是,当第一个复选框被选中时,警报将输出:“true undefined”形成从现在开始对任何复选框的第二次选中/取消选中,并且拥有输出将是:“true false”和“false true”
我的期望是这两个变量将是相同的,因为它们应该指向相同的值,因为:
scope.bindModel
被发送到指令selectedChecks[$index]
并且scope.selectedChecks[i]
应该是相同的。请帮助我了解我在这里做错了什么。似乎checkIt
函数在 Angular 在复选框和数组之间进行数据绑定之前运行。