我有一个像这样定义的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?
答案 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);
});