【发布时间】:2022-08-14 11:36:29
【问题描述】:
我有一个典型的 Glimmer \"base\" 组件:
import Component from \'@glimmer/component\';
export default class BaseComponent extends Component { ... }
它有一个像往常一样的模板,但该组件的实际实现是子组件,它覆盖了一些模板 getter 和参数,以便它与各种不同的数据类型一起工作。
export default class TypeAComponent extends BaseComponent { ... }
export default class TypeBComponent extends BaseComponent { ... }
等等
我的问题是:如何指定所有子组件都应该使用父类模板,这样我就不必为所有子组件复制相同的相当复杂的 HTML?从视觉上看,组件应该看起来相同,因此任何更改都必须在所有子组件类型中复制。因此,多个重复的模板并不理想。
在 Ember Classic 组件中有 layout 和 layoutName 属性,所以我可以这样做:
layoutName: \'components/component-name\'
在基础组件中,所有子组件都自动使用定义的模板。
现在我正在迁移到 Glimmer 组件,我似乎无法弄清楚如何做到这一点。我努力了:
-
layout财产 -
layoutName财产 -
template财产 - 在没有模板的情况下使用子组件,希望它们会自动回退到父类模板。
唯一可行的方法是像这样创建 Application Initializer:
app.register(\'template:components/child1-component\', app.lookup(\'template:components/base-component\'));
app.register(\'template:components/child2-component\', app.lookup(\'template:components/base-component\'));
但这感觉太老套了,以至于我决定先在这里问是否有一种我错过的正确方法来做到这一点?
标签: javascript ember.js glimmer.js