Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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 从路由访问控制器';s before模型_Javascript_Ember.js_Rsvp.js - Fatal编程技术网

Javascript 从路由访问控制器';s before模型

Javascript 从路由访问控制器';s before模型,javascript,ember.js,rsvp.js,Javascript,Ember.js,Rsvp.js,我想从路由上的beforeSend钩子中访问路由的控制器,以利用承诺上的暂停逻辑 这是我当前的解决方法,可以在我的控制器上设置“category_config”,这是从beforeModel中的承诺中获得的 Imaging.ReferenceRoute = Ember.Route.extend(Imaging.Ajax, { setupController: function(controller, model) { controller.set('error_messages',

我想从路由上的beforeSend钩子中访问路由的控制器,以利用承诺上的暂停逻辑

这是我当前的解决方法,可以在我的控制器上设置“category_config”,这是从beforeModel中的承诺中获得的

Imaging.ReferenceRoute = Ember.Route.extend(Imaging.Ajax, {
  setupController: function(controller, model) {
    controller.set('error_messages', []);
    controller.set('category_config', this.get('category_config'));
    return this._super(controller, model);
  },
  beforeModel: function(transition) {
    var categories;
    categories = this._promise("/url/foo/", "GET");
    return Ember.RSVP.all([categories]).then(((function(_this) {
      return function(response) {
        return _this.set('category_config', response[0]);
      };
    })(this)));
  },
  model: function() {
    return Imaging.Document.find();
  }
});
如果您好奇,我的_promisehelper如下:

_promise: function(url, type, hash) {
  return new Ember.RSVP.Promise(function(resolve, reject) {
    hash = hash || {};
    hash.url = url;
    hash.type = type;
    hash.dataType = "json";
    hash.success = function(json) {
      return Ember.run(null, resolve, json);
    };
    hash.error = function(json) {
      if (json && json.then) {
        json.then = null;
      }
      return Ember.run(null, reject, json);
    };
    return $.ajax(hash);
  });
}

如果不让beforeModel在路由上设置“category_config”,然后在setupController中的控制器上设置它,我怎么能做到这一点呢?

未测试,但我认为您可以返回一个带有
Imaging.Document.find()
\u promise(“/url/foo/”,“GET”)的元组,使用


这是一个更干净的方法。谢谢不客气!如果这解决了你的问题,你能接受吗?@MarcioJunior这就是我喜欢stackoverflow的原因。这个杂烩正是我需要的
Imaging.ReferenceRoute = Ember.Route.extend(Imaging.Ajax, {
  setupController: function(controller, model) {
    controller.set('error_messages', []);
    controller.set('category_config', model.category_config);
    return this._super(controller, model.document);
  },  
  model: function() {
    return Ember.RSVP.hash({
      document: Imaging.Document.find(),
      category_config: this._promise("/url/foo/", "GET")
    });
  }
});