有没有办法在不使用$ scope的情况下观察变量的变化值?我的经理告诉我,我们可能会将代码迁移到没有$ scope的angular2,所以我们必须编写代码,这样当我们将它迁移到angular2时,它只需要很少的更改。所以现在我想跟踪一个变量的跟踪变化,我们这样做的角度如下:
$scope.$watch('myVar', function() {
alert('hey, myVar has changed!');
});
现在我希望这个像
app.controller('auditCtrl',
function($scope, $localStorage) {
var adc = this;
angular.extend(this, {
$state: $state,
count: 0
}
//What i want is something like
abc.$watch('count', function() {
alert('hey, count has changed!');
});
})
答案 0 :(得分:3)
不,那不可能。但问问自己,你想要$watch
的变量是什么?如果是表单字段,则只需使用ng-change
即可。
如果您可以使用es2015语法,您可以在控制器原型上添加Getters和Setter,然后触发update
功能。
像这样:
let auditCtrl = function () {
const adc = self;
adc.counterItem = null;
// etc.
};
Object.defineProperty(auditCtrl.prototype,
"counterItem", {
get: function () {
return this.counterItem;
},
set: function (newValue) {
this.counterItem = newValue;
// Call method on update
this.onCounterItemChange(this.counterItem);
},
enumerable: true,
configurable: true
});
或者,在我看来,最好的方法是为您的应用程序使用组件架构。使用组件,您可以使用一些内置生命周期钩子,例如$onInit
,$onChanges
等。这样,您也可以使用angular2方式进行思考,因为您可能希望迁移。