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

Templates 如何使用Ember.handlebar.compile()在类定义中声明Ember模板?,templates,view,ember.js,ember-router,Templates,View,Ember.js,Ember Router,在最新的ember主版本中,我尝试声明一个类似于以下内容的模板: App.IndexView = Ember.View.extend({ template: Ember.Handlebars.compile('Index template in code') }); …但它不起作用。使用相同的代码并使用templateName属性在HTML中引用模板可以正常工作。有什么想法吗 下面是一个JSFIDLE,其中包含周围的代码和HTML: 可能是一个bug,如果您尝试设置defaultTempl

在最新的ember主版本中,我尝试声明一个类似于以下内容的模板:

App.IndexView = Ember.View.extend({
  template: Ember.Handlebars.compile('Index template in code')
});
…但它不起作用。使用相同的代码并使用
templateName
属性在HTML中引用模板可以正常工作。有什么想法吗

下面是一个JSFIDLE,其中包含周围的代码和HTML:

可能是一个bug,如果您尝试设置defaultTemplate而不是template,它将起作用。你也许应该提出一个问题

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

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


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

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