我有两个控制器标签和报告。 标签控制器需要在Reports上观察数据属性。 但是,在服务器上调用后,data属性是异步的并且已更新。 如何在报告中获取该属性?
我试图做以下事情:
ReportsController({
data: null,
actions: {
onAsyncCall: function(updatedData) {
this.set('data', updatedData);
}
}
});
TagsController({
reportsController: Ember.inject.controller('reports'),
doSomethingDataUpdate: Ember.observer('reportsController.data', function() {
this.set('tagProperties', this.get('reportsController.data'));
}
});
提前致谢!
答案 0 :(得分:1)
所以我想出了办法。而不是让TagsController注入ReportsController。我将其反转并将Tagscontroller注入到Reports中。
在异步调用之后,我更新了TagsController上的属性,该属性现在是可观察的。问题解决了。
ReportsController({
tagsController: Ember.inject.controller('reports.tags'),
actions: {
onAsyncCall: function(updatedData) {
this.set('tagsController.data', updatedData);
}
}
});
TagsController({
data: null,
doSomethingDataUpdate: Ember.observer('data', function() {
this.set('tagProperties', this.get('data'));
}
});
<强>更新强>: 所以我找到了更好的解决方案。 communicating between components
基本上我需要使用服务,特别是扩展Ember.Events的服务。
这样,每当我在报告中进行异步更新时,都会触发更新标记的操作。我想我读过某个地方,观察者和计算器只在this.get()之后被触发。所以它并没有真正观察我正在寻找的变化。谢谢大家的帮助。