У меня есть проблема, которая очень сложна, что я даже не знаю, как определить, поэтому я приведу пример, и, надеюсь, вы будете способный объяснить, что я делаю неправильно. Мой HTML является:Директива, Функция связи, Массив, DataBinding Порядок вещей неоднозначен
<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 выполняет привязку данных между флажками и массивом.
Привет, не могли бы вы предоставить нам плункер/jsfiddle. Или сообщите нам, что данные будут в '$ scope.selectedChecks = {}' ?. – Ali
Да, он имеет ключевое значение pare, где ключ является текущим индексом $, а значение является истинным или ложным в результате привязки угловых данных из флажка – TBE
'ng-model =" bindModel "' гарантирует, что каждый раз флажок установлен, он привязывает true или false к '$ scope.selectedChecks [$ index]' – TBE