Javascript 余烬嵌套路线和承诺
我有一个jquery ajax调用,定义如下Javascript 余烬嵌套路线和承诺,javascript,jquery,ember.js,promise,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('mes
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' });
});
});
App.MessagesRoute = Ember.Route.extend({
model : function(){
return messages;
}
});
我在我的路线中使用承诺消息
,如下所示
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' });
});
});
App.MessagesRoute = Ember.Route.extend({
model : function(){
return messages;
}
});
以上路线运行良好
App.MessageRoute = Ember.Route.extend({
model: function(params) {
message = messages.findBy("id", params.message_id);
return message;
}
});
接下来,我有一个嵌套路由,如下所示。但是,当我直接尝试访问#/messages/
时,就会出现错误。加载#/messages
然后访问#/messages/
效果很好
App.MessageRoute = Ember.Route.extend({
model: function(params) {
message = messages.findBy("id", params.message_id);
return message;
}
});
那么,如何处理嵌套路由中的承诺呢
那么,如何处理嵌套路由中的承诺呢
显然
但是,当我直接尝试访问#/messages/时,会出错:
App.MessageRoute = Ember.Route.extend({
model: function(params) {
message = messages.findBy("id", params.message_id);
return message;
}
});
消息
仍然是承诺,而不是数组;它没有通过方法查找的。相反,使用
return messsages.then(function(m) {
return m.findBy("id", params.message_id);
});
fetchMessages
不是一个函数,您不能执行它因此,ember可以处理从model()
返回的承诺在哪里定义了findBy
?对不起,已编辑<代码>获取消息
是一个函数findBy
是一种余烬。我是以这个示例代码为基础的,.then(function(data){returndata;}
是剥离textStatus
和jqXhr
参数吗?不是。为了简单起见,它做了一些我跳过的数据操作。谢谢!我仍然有一个问题,我的视图依赖于此承诺/模型,并使用this.get('context')).model
在呈现视图时是未定义的。知道我如何使视图也与承诺一起工作吗?嗯,对不起,我对Ember没有太多经验。