我在路由中有这样的代码:
import Ember from 'ember';
export default Ember.Route.extend({
isEditing: true,
beforeModel: function() {
return Ember.$.getScript('//api.filestackapi.com/filestack.js');
}
});
但是这是正确的方式吗?每次用户转换到这个路由时,它都会下载这个文件吗?
我尝试了这个解决方案,但是在那个运行循环中DOM已经呈现,但是我需要这个文件来呈现页面,所以这不起作用。我也试图删除运行循环调用,但它似乎不再在Ember 2.7中工作(我得到了一个过时的警告,应用程序只是未能加载任何东西!)。
是。你的方法是对的。这也是beforeModel
钩子在指南中描述的。
你可以从这个钩子返回一个promise来暂停转换,直到promise被解析(或拒绝)。例如,这对于从服务器检索输入路由所需的异步代码可能很有用。
http://emberjs.com/api/classes/Ember.Route.html method_beforeModel