简体   繁体   English

灰烬的嵌套路线和承诺

[英]Ember Nested Route and Promises

I have a jquery ajax call defined like this 我有一个像这样定义的jquery ajax调用

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

var messages = fecthMessages();

My routes are setup like this 我的路线是这样设置的

App.Router.map(function() {

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

I use the promise messages in my routes like this 我在这样的路线中使用了Promise messages

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

The above route works fine. 上面的路线工作正常。

Next I have a nested route like shown below. 接下来,我有一个嵌套的路由,如下所示。 This however errors out when I directly try to visit #/messages/<id of the message> . 但是,当我直接尝试访问#/messages/<id of the message>时,这会出错。 Loading #/messages followed by visiting #/messages/<id of message> works fine. 加载#/messages然后访问#/messages/<id of message>可以正常工作。

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

    }
  });

So how do I handle the promises in nested routes? 那么我该如何处理嵌套路由中的promise?

So how do I handle the promises in nested routes? 那么我该如何处理嵌套路由中的promise?

Apparently Ember handles these for you . 显然, Ember为您处理了这些

This however errors out when I directly try to visit #/messages/: 但是,当我直接尝试访问#/ messages /时,这会出错:

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

messages is still a promise, not an array; messages仍然是一个承诺,而不是数组; it doesn't have a findBy method. 它没有findBy方法。 Instead, use 相反,使用

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM