Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 余烬嵌套路线和承诺_Javascript_Jquery_Ember.js_Promise - Fatal编程技术网

Javascript 余烬嵌套路线和承诺

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

我有一个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' });                       
    });                                                                        
  });
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没有太多经验。