Javascript 我可以给余烬组件指定模板名称吗

Javascript 我可以给余烬组件指定模板名称吗,javascript,ember.js,Javascript,Ember.js,我想这样说: App.SimplyHelloComponent = Em.Component.extend({ classNames: ['bold', 'italic', 'blue'] templateName:'my-temp' }); 这是可行的,但是'components/'作为前缀添加到为查找提供的模板名中 因此,如果您想使用名称“my-temp”,请使用

我想这样说:

App.SimplyHelloComponent = Em.Component.extend({
                       classNames: ['bold', 'italic', 'blue']

                       templateName:'my-temp'
                });

这是可行的,但是
'components/'
作为前缀添加到为查找提供的
模板名中

因此,如果您想使用名称“my-temp”
,请使用

<script type="text/x-handlebars" data-template-name="components/my-temp">
...
</script>

...
对于内联模板,或者让构建工具从
组件
模板子目录中预编译
my temp
模板。

根据您的评论编辑答案 在您的评论之后,我做了一些测试,您认为正确的地方是,为了让一切正常工作,您应该遵循约定并将类名命名为与模板相同的名称,因此
EmberTestComponent
的模板应称为
components/ember test

例如,假设您有以下组件类:

App.EmberTestComponent=Ember.Component.extend({
  templateName:'components/ember-test'
});
那么您的模板应该如下所示:

<script type="text/x-handlebars" data-template-name="components/ember-test">
  <h1>{{title}}</h1>
  <p>{{body}}</p>
</script>
<script type="text/x-handlebars" data-template-name="index">
  {{#each}}
    {{ember-test title=title body=body}}
  {{/each}}
</script>
{{simply-hello}}
但是,模板必须包含
组件
前缀。同样重要的是,按照惯例,组件模板名必须在其名称中包含
“-”

然后使用自定义组件,如下所示:

<script type="text/x-handlebars" data-template-name="components/ember-test">
  <h1>{{title}}</h1>
  <p>{{body}}</p>
</script>
<script type="text/x-handlebars" data-template-name="index">
  {{#each}}
    {{ember-test title=title body=body}}
  {{/each}}
</script>
{{simply-hello}}

{{{#各}
{{ember test title=title body=body}
{{/每个}}
还要注意我们是如何将所需参数传递给组件的,
title
body
,这是必要的,因为您的组件对其上下文一无所知,它只会引用我们传递给它的信息,这是组件的全部要点。 正如您所看到的,它包含在我们在模板中使用组件时设置的变量名中


希望有帮助。

是的,您可以指定模板名称。我只是试了一下,效果不错。以下是方法:

App.SimplyHelloComponent = Ember.Component.extend({

    layoutName: 'components/my-temp'

});

script type="text/x-handlebars" data-template-name="components/my-temp">
...
</script>

如果我这样定义我的模板,那么我必须使用的组件名称是handlebars{{{simply hello}}或{{my temp}}我有这样一个:在jsbin,但它不工作我认为组件完全由模板驱动…如果我写一个hanler
App.EmberTestComponent=Ember.component.extend({templateName:'components/hello world',handleclick:function(){alert(“调用的处理程序”);})
然后它就不起作用了,但是如果你在你的应用程序中定义一个与模板同名的组件,然后调用处理程序,找到一个,如果你将一个常规组件与handlebar模板同名,那么处理程序就会被称为@vinay3206,你说得对,我已经编辑了我的答案以反映正确的方式。@intutivepixel所以是最终的,我不能给出一个cutom我的组件模板的名称