布局模板不使用组件

时间:2013-10-13 19:46:53

标签: ember.js

我有模板,用以下内容开始定义:

App.PasswordInputComponent = Ember.TextField.extend({
    templateName: 'templates/components/text-input-component',
    layoutName: 'templates/components/text-input-layout',

如果没有设置这两个属性,它将为组件“模板/组件/密码输入”选择默认模板。令人惊讶的是(阅读:令人失望),事实上它确实加载了这个默认值而忽略了两个参数!

文档说明这两个属性的行为与它们的View父类相同,但到目前为止这不是我的经验。谁能告诉我他们是否有这个工作?

3 个答案:

答案 0 :(得分:2)

我发现如果你指定:

templateName: 'components/text-input-component'

你可以让组件使用你这样命名的模板,但你也需要用这个名称来引用把手助手:

{{text-input-component}}

而不是:

{{password-input}}

不确定为什么会这样。

答案 1 :(得分:1)

对于那些仍在寻找这个答案的人来说,这就是我的所作所为:

App.MyFirstComponent = Ember.Component.extend({
    title: 'Hello'
});

这将检查components/my-first中的模板,其内容如下:

{{title}} World

然后,为了扩展这个组件并使用相同的布局,我这样做:

App.MySecondComponent = App.MyFirstComponent.extend({
    layoutName: 'components/my-first',
    title: 'Goodbye, Cruel'
});

现在,要同时打电话:

{{my-first}} // output: Hello World

{{my-second}} // output: Goodbye, Cruel World

答案 2 :(得分:0)

您无法在Component上指定layoutName,因为Handlebars帮助程序的块内容被解释为模板,而您指定的模板将成为布局。因此没有选项来定义layoutName。

此提交中的更多信息:https://github.com/emberjs/ember.js/commit/6f6247f54e1f2b841f73dedd274e962b3703ca1d

  

在调用它时块传递的组件中   (在把手模板中)被解释为其模板,和   注册为components/my-component的模板成为其中的模板   布局。

和API-docs:http://emberjs.com/api/classes/Ember.ComponentTemplateDeprecation.html