使用gulp-handlebars访问嵌入式嵌套路径的预编译车把模板

时间:2015-01-15 22:07:43

标签: ember.js handlebars.js gulp

我正在尝试使用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。

0 个答案:

没有答案