В Angular 1.3 можно использовать this.foo='bar'
insteaod $scope.foo='bar'
. Теперь, как я могу использовать $watch
без $scope?
Использование $watch без $scope (контроллер как синтаксис)
Ответ 1
Существует несколько способов избежать использования $watch
при использовании синтаксиса controller as
.
Следующие примеры взяты из сообщения о котором я писал об избежании $scope
.
Использование ng-change
Если у вас установлены часы для прослушивания изменений свойств, которые происходит из поля формы, тогда ng-change - ваш лучший выбор.
<input type="text" ng-model="ctrl.name" ng-change="ctrl.search(ctrl.name)" />
MyCtrl.prototype.search = function(name){
//call some service here
};
Использование свойств ES5
Если у вас есть какое-либо свойство, которое не связано с полем ввода или будет обновляться с кода, может показаться, что часы - это ваши единственные выбор. Однако, если вам не нужно поддерживать IE8 или ниже, то вы могут использовать свойства ES5 для запуска функций, когда что-то меняется на вашем контроллере.
var MyCtrl = function(){
this._selectedItem = null;
};
Object.defineProperty(MyCtrl.prototype,
"selectedItem", {
get: function () {
return this._selectedItem;
},
set: function (newValue) {
this._selectedItem = newValue;
//Call method on update
this.onSelectedItemChange(this._selectedItem);
},
enumerable: true,
configurable: true
});