由于操作,ember在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

RSVP.hash解析POJO,这意味着它不扩展Ember.Object。因此,setget没有在对象本身上定义。您可以在不是Ember对象的对象上使用Ember.setEmber.get,它将触发计算属性。

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

最新更新