Ember嵌套路线和承诺

时间:2014-09-10 14:20:38

标签: javascript jquery ember.js promise

我有一个像这样定义的jquery ajax调用

var fetchMessages = function(){$.getJSON(<some url>).then(function(data){ return data; }};

var messages = fecthMessages();

我的路线设置如下

App.Router.map(function() {

    this.resource('messages', function() {
      this.resource('message', { path: ':message_id' });                       
    });                                                                        
  });

我在我的路线中使用了承诺messages

App.MessagesRoute = Ember.Route.extend({
    model : function(){
        return messages;
    }
});

上述路线运作正常。

接下来我有一个如下所示的嵌套路线。但是,当我直接尝试访问#/messages/<id of the message>时,这会出错。加载#/messages后访问#/messages/<id of message>即可。

App.MessageRoute = Ember.Route.extend({
    model: function(params) {
      message = messages.findBy("id", params.message_id);
      return message;

    }
  });

那么如何处理嵌套路由中的promise?

1 个答案:

答案 0 :(得分:1)

  

那么如何处理嵌套路由中的promise?

显然是Ember handles these for you

  

当我直接尝试访问#/ messages /:

时,这会出错
App.MessageRoute = Ember.Route.extend({
    model: function(params) {
      message = messages.findBy("id", params.message_id);
      return message;

    }
  });

messages仍然是一个承诺,而不是数组;它没有findBy方法。相反,使用

return messsages.then(function(m) {
  return m.findBy("id", params.message_id);
});