Для наблюдения за областью видимости объекта является $scope.$watch
с objectEquality
установлен в true ИЛИ $scope.$watchCollection
лучше?
Для переменной в $scope
объекта (например, 15 атрибутов, некоторые вложенные 2-х уровней в глубину) обновляются с входными элементами и ng-model
в представлении, как плохо $scope.$watch
с objectEquality
набором для true
? Это большая вещь, которую нужно избегать?
Есть $watchCollection
лучшее решение?
Я ищу легкие победы, чтобы улучшить производительность моего приложения AngularJS (я все еще придерживаюсь v1.2.2).
// ctrl scope var
$scope.filters = {
name: '',
info: {test: '', foo: '', bar: ''},
yep: ''
// etc ...
}
// ctrl watch ?
$scope.$watch('filters', function(newVal, oldVal) {
if(newVal !== oldVal) {
// call with updated filters
}
}, true);
// or ctrl watch collection ?
$scope.$watchCollection('filters', function(newVal, oldVal) {
if(newVal !== oldVal) {
// call with updated filters
}
});
// view input with ng-model
<input type="text" ng-model="filters.name" />
<input type="text" ng-model="filters.info.test" />
<input type="text" ng-model="filters.yep" />
// etc ...
очень тщательно !! – wbeange
Не уверен, что вы подразумеваете под '$ watchCollection (..., true)', поскольку функция не принимает логический аргумент (например, objectEquality), как '$ watch'. – tamakisquare
@tamakisquare Я сделал исправление и дополнительные обновления, чтобы сделать его более ясным. Включая обновление скрипта JS. –