我正在尝试使用gulp-handlebars在嵌套路由的上下文中访问预编译的Handlebars模板
鉴于这条简单的路线:
App.Router.map(function() {
this.resource('posts', function() { // the `posts` route
this.route('favorites'); // the `posts.favorites` route
});
});
posts.hbs
模板
<div>
Posts
{{outlet}}
</div>
posts.favorites.hbs
模板
<div>Favorites</div>
两者都位于app/templates
使用documentation中显示的gulp任务,我可以成功地将模板预编译为dist/templates.js
。例如posts.favorites
被编译为:
this["Ember"]["TEMPLATES"]["posts"]["favorites"] = Ember.Handlebars.template(function anonymous(Handlebars,depth0,helpers,partials,data) {
this.compilerInfo = [4,'>= 1.0.0'];
helpers = this.merge(helpers, Ember.Handlebars.helpers); data = data || {};
data.buffer.push("<div>Favorites</div>\n\n");
});
让Ember实例化控制器和路线,我可以成功显示#/posts
但不能#/posts/favorites
,因为Ember会查找posts/favorites
模板,而不是posts.favorites
。
如果我手动将预编译的posts.favorites
模板更改为:this["Ember"]["TEMPLATES"]["posts/favorites"] = Ember.Handlebars.template(...)
,那么我可以成功显示#/posts/favorites
,
我想避免手动指定模板,让EmberJS解决它。
有没有办法从更改gulp任务到后处理模板文件?
我使用的是EmberJS 1.8.1,车把1.3.0和gulp 3.8.10。