我有一条返回等多个模型的路由
FriendEnemyRouter
model: function() {
return Ember.RSVP.hash({
friends: this.store.find('People', ...),
enemies: this.store.find('People', ..),
在同一个路由器上有一个动作(它在路由器上,因为它确实存储了"东西")
actions: {
findMoreFriends: function(param, param) {
var newFriends = this.store.find('People', ..);
var newPromise = this.controller.get('model'); //OK. Inspecting sees above friends and enemies. What type is it?
model.set("newFriends": newPromise); // throws an exception
//-- or --
model.newFriends = newPromise; // no exception but observer (computer property) on the controller is not fired.
}
}
最终,我希望控制器上的这个计算属性能够激发
FriendEnemyController
computedNewFriends: function() {
....
).property('newFriends');
向rsvp承诺添加新承诺的程序是什么。。。甚至不确定对象类型。。。
model.set("newFriends": newPromise); // throws an exception
model.newFriends = newPromise; // no exception but clearly doesnt notify observer/property
RSVP.hash
解析POJO
,这意味着它不扩展Ember.Object
。因此,set
和get
没有在对象本身上定义。您可以在不是Ember对象的对象上使用Ember.set
和Ember.get
,它将触发计算属性。
Ember.set(model, 'newFriends', newPromise)