使用不带$scope的$watch(作为语法的控制器)
Using $watch without $scope ( controller as syntax)
在Angular 1.3中,可以使用this.foo='bar'
代替$scope.foo='bar'
。现在,如何在没有$scope的情况下使用$watch
?
在使用controller as
语法时,有几个选项可以避免使用$watch
。
下面的例子取自我写的一篇关于避免$scope
的博客文章。
使用ng-change
如果你设置了一块手表来监听房产的变化源于表单字段,则ng更改是您的最佳选择。
<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
});
相关文章:
- 当使用控制器作为语法时,如何从父指令继承属性
- Angular JS“;控制器为“;语法不起作用
- "控制器作为“;$timeout中的语法
- 使用ES6类语法在控制器中分配依赖项
- AngularJS:使用$scope$以控制器作为语法进行观察
- Angular UI Grid Edit可以与“;控制器为“;语法
- 使用控制器作为语法和 ngRoute 分别加载控制器
- Angular js指令使用控制器作为语法ng点击不起作用
- 作为语法的控制器没有将新的obj传递给数组
- 控制器作为搜索输入表单的语法
- '控制器为'语法或服务
- 尝试理解$.inArray,或将$scope转换为“$scope”;控制器As”;AngularJS中的语法
- 我正在努力理解AngularJS's控制器的语法
- 以控制器为语法的多个angularjs指令实例
- 使用不带$scope的$watch(作为语法的控制器)
- AngularJS“控制器作为”语法错误
- AngularJS控制器语法 - 数组和函数版本之间的差异
- 使用特定语法对控制器进行单元测试
- 使用 $scope.$apply 在 TypeScript 中使用控制器作为 vm 语法时
- 具有“控制器作为”语法的动态控制器