Использование $ watch без $ scope (контроллер как синтаксис)

В Angular 1.3 можно использовать this.foo='bar' insteaod $scope.foo='bar' . Теперь, как я могу использовать $watch без $ scope?

  • AngularJS: Очистить $ watch
  • Событие изменения свойства javascript
  • $ Watch не работает, когда модель обновляется в области. $ Apply in directive
  • JQuery: просмотр изменения значения nodevalue
  • AngularJS: $ scope. $ Watch не обновляет значение, полученное из $ resource в пользовательской директиве
  • One Solution collect form web for “Использование $ watch без $ scope (контроллер как синтаксис)”

    Существует несколько способов избежать использования $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 }); 
    JavaScript делает сайт умным, красочным и простым использованием.