У меня есть следующий код в функции связи моей директивы:Наблюдение за изменением модели
link: function (scope, elem, attrs, ngModel) {
$(elem).datagrid({
columns: [[
{ field: 'ck', checkbox: 'true' },
{ field: 'ProjectID', title: 'Project ID', width: '30%' },
{ field: 'Name', title: 'Name' }
]]
});
ngModel.$render = function (value) {
$(elem).datagrid('loadData', ngModel.$viewValue);
};
scope.$watch('projectList', function (newValue, oldValue) {
$(elem).datagrid('loadData', ngModel.$viewValue);
});
}
Когда массив $ scope.projectList изначально назначены данные как слушатели обожженных. Где-то в моем контроллере (только для тестирования) я добавляю еще один элемент $ scope.projectList:
$scope.test = function() {
var project = $scope.projectList[0];
$scope.projectList.push(project);
}
На данный момент ни один из слушателей fired.Can кто-то пожалуйста, объясните, почему это происходит?
Благодаря
Похоже меняется до $ watchCollection сделал это. большое спасибо за помощь! – Mark
Я Я тоже это услышал. Я также обновил ответ с дополнительным объяснением того, что происходит за кулисами, и когда даже '$ watchCollection()' может быть недостаточно (в зависимости от того, какие изменения необходимо обнаружить). – plamut
Еще одна вещь. Почему ngModel. $ Render не срабатывает ни n Я изменяю коллекцию? – Mark