gpt4 book ai didi

javascript - 从路由的 beforeModel 访问 Controller

转载 作者:数据小太阳 更新时间:2023-10-29 06:11:46 26 4
gpt4 key购买 nike

我想从路由的 beforeSend Hook 中访问我的路由 Controller ,以利用 pause on promise 逻辑。

这是我目前的解决方法,可以在我的 Controller 上设置“category_config”,这是从 beforeModel 中的 promise 中获得的。

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();
}
});

如果你好奇我的 _promise 助手如下:

_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 中的 Controller 上设置它,我该如何做到这一点?

最佳答案

未测试,但我认为您可以使用 Imaging.Document.find()_promise("/url/foo/", "GET"); 返回一个元组; ,使用 Ember.RSVP.hash

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")
});
}
});

关于javascript - 从路由的 beforeModel 访问 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21584825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com