我有一个特定的用例,我需要在浏览器中编译模板。这是因为模板在开发时不可用。
import Ember from 'ember';
const myTempRouteList = ['home']; // this is retrieved from the backend
export function initialize(instance) {
let container = instance.container;
let Router = container.lookupFactory('router:main');
myTempRouteList.forEach(function (name) {
let routeName = name.dasherize();
Router.map(function(){ // router.map is undefined here
this.resource(routeName, {path: routeName});
});
container.register(`route:${routeName}`, Ember.Route.extend({}));
container.register(`template:${routeName}`, Ember.HTMLBars.compile(`I am the template of ${routeName}`);
}, this);
}
export default {
name: 'register-routes',
initialize: initialize
};
我运行它并发出以下错误:Uncaught Error: Cannot call 'compile' without the template compiler loaded. Please load 'ember-template-compiler.js' prior to calling 'compile'
。
所以我把它添加到我的Brocfile.js:
app.import('bower_components/ember/ember-template-compiler.js');
但是,错误仍然存在。
修改2015-07-29 当我将ember-template-compiler攻击到app \ index.html文件时,它可以工作:
<body>
{{content-for 'body'}}
<script src="//builds.emberjs.com/tags/v1.13.5/ember-template-compiler.js"></script>
<script src="assets/vendor.js"></script>
....
我使用的版本:
答案 0 :(得分:0)
我找到了问题的解决方案。有两件事:
Brocfile.js
重命名为ember-cli-build.js
的错误。我按照Transition Guide 我需要将ember-template-compiler
添加到我的构建中,方法是将{ prepend: true }
传递给我的import语句:
app.import('bower_components/ember/ember-template-compiler.js', { prepend: true });
我还删除了加载bower.json
的{{1}}行,因为没有必要,ember-template-compiler
包含在bower ember包中。