我有模板,用以下内容开始定义:
App.PasswordInputComponent = Ember.TextField.extend({
templateName: 'templates/components/text-input-component',
layoutName: 'templates/components/text-input-layout',
如果没有设置这两个属性,它将为组件“模板/组件/密码输入”选择默认模板。令人惊讶的是(阅读:令人失望),事实上它确实加载了这个默认值而忽略了两个参数!
文档说明这两个属性的行为与它们的View
父类相同,但到目前为止这不是我的经验。谁能告诉我他们是否有这个工作?
答案 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