2015-04-02 74 views
1

的我有一个返回几种模式这样烬的承诺添加到RSVP承诺,因为行动

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 

回答

1

RSVP.hash解决了一个POJO,这意味着它不会延长Ember.Object。因为setget没有在对象本身上定义。您可以在不是Ember对象的对象上使用Ember.setEmber.get,并且它会触发计算属性。

Ember.set(model, 'newFriends', newPromise) 
+0

谢谢。按需要工作。有趣的是,这也适用于路由器。 'this.set(“controller.model.newFriends”,newPromise);' – 2015-04-02 05:48:38