我尝试观察(在我的控制器中)我的Ember模型是否已经改变。
try {
const foo = "bar"
} catch (e) {
console.log(e)
}
try {
console.log(foo) -> is not defined
} catch (e) {
console.log(e)
}
除非我之前访问personChanged: function() {
// do stuff
}.observes('person.dirtyType'),
属性,否则永远不会触发此观察者。例如,如果我isDirty
路由中的属性(获取模型的位置),观察者将被触发一次。
get
如果我想在每次模型更改时触发观察者,我需要再次访问观察者中的model.people.get('firstObject').get('dirtyType');
controller.set('person', model.people.get('firstObject'));
。
dirtyType
观察者中personChanged: function() {
this.get('person.dirtyType');
// do stuff
}.observes('person.dirtyType'),
的值始终如预期。
也许我完全错了,但我无法遵循上述行为。
答案 0 :(得分:0)
当我们根据此问题Ember computed alias on array firstObject not working
使用controller.set('person', model.people.get('firstObject'));
时,会发生一些无法预测的事情。
我还没有经历过这样的确认。可能在此之前您可以尝试以下解决方法,
person:Ember.computed('model.people.[]',function(){
return return this.get('model.people.firstObject');
})
您可以定义计算属性
,而不是上述内容personChanged:Ember.observer('person.dirtyType',function() {
// do stuff
}),
现在你的下方观察者将一直工作。
compile group: 'com.google.guava', name: 'guava', version: '21.0'