如何使用Ember.Handlebars.compile()在类定义中声明Ember模板?

时间:2013-01-17 21:53:08

标签: templates view ember.js ember-router

在最新的ember master版本中,我正在尝试声明一个类似于此的模板:

App.IndexView = Ember.View.extend({
  template: Ember.Handlebars.compile('Index template in code')
});

..而且它不起作用。使用相同的代码并使用templateName属性在HTML中引用模板可以正常工作。有什么想法吗?

这是一个包含周围代码和HTML的jsfiddle: http://jsfiddle.net/TTMMz/3/

2 个答案:

答案 0 :(得分:0)

可能是一个错误,如果您尝试设置defaultTemplate而不是模板,它将起作用。你应该提出一个问题。

App.IndexView = Ember.View.extend({
  defaultTemplate: Ember.Handlebars.compile('Index template in code')
});

FYI

  

对于可能稍后定义模板的视图类(例如,   另一个{{view}} Handlebars助手调用的块部分   模板或子类),您可以提供defaultTemplate   属性设置为已编译的模板函数。如果模板不是   稍后为视图实例提供了defaultTemplate值   将被使用:

AView = Ember.View.extend({
     defaultTemplate: Ember.Handlebars.compile('I was the default'),
     template: null,
     templateName: null   });

答案 1 :(得分:0)

templateName: 'index'添加到App.IndexView。看起来路由器需要/想要一个名为index的模板以及你在JSFiddle中使用它的方式,路由器无法找到它。

JSFiddle example

App.IndexView = Ember.View.extend({
  template: Ember.Handlebars.compile('Index template in code'),
  templateName: 'index'
});