我有以下情况:
...
SN.BaseService = Ember.Object.extend({
action : null,
send: function(action) {
this.set('action', action);
}
});
...
SN.userService = SN.BaseService.create({
login: function() {
if (some_condition) {
this.send("onSuccessfulLogin");
} else {
this.send("onFailedLogin");
}
}
});
...
SN.BaseService.reopen({
onAction: function() {
doSomething();
}.observes('action')
});
SN.BaseService.reopen({
actionChanged: Ember.observer(function() {
doSomething();
}, 'action')
});
我的观察者(无论我设置它们的方式 - 都显示在这里)都不会被调用,即doSomething()永远不会被调用。
对象级别的观察者工作正常。只有当我尝试将它们放在“班级”级别时。 反馈非常受欢迎。
由于
答案 0 :(得分:3)
问题是你在实例化对象后重新打开了一个类。 看起来重新打开类不会更新每个实例。
如果我没错,你可以:
在实例化userService之前重新打开课程(请参阅此jsfiddle)
App.BaseService.reopen({
onAction: function() {
this.doSomething();
}.observes('action')
});
App.BaseService.reopen({
actionChanged: Ember.observer(function() {
this.doSomething();
}, 'action')
});
直接重新打开userService(请参阅此jsfiddle)。
App.userService.reopen({
onAction: function() {
this.doSomething();
}.observes('action')
});
App.userService.reopen({
actionChanged: Ember.observer(function() {
this.doSomething();
}, 'action')
});
可能有一些更好的解决方案,但我不知道。