在Angular 1.3中,可以使用this.foo='bar'
的{{1}} insteaod。现在,如何在没有$ scope的情况下使用$scope.foo='bar'
?
答案 0 :(得分:19)
使用$watch
语法时,有几个选项可以避免使用controller as
。
以下示例来自blog post I wrote about avoiding $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
});