Ember.js的新手。
我正在尝试创建强大的组件,这些组件将委托给控制器以获取各种属性。我知道我可以绑定这样的个别属性,但看起来很冗长。
{{#my-component attr1=attr1 attr2=attr2}}
Hello
{{/my-component}}
似乎想要将所有内容委托给控制器可能是一种常见情况。这样做有推荐的模式吗?
答案 0 :(得分:0)
您的示例代码将被视为正确的方式。
你可以在技术上传入一个对象(可能由控制器组成),但我建议不要这样做。组件不应该真正了解数据的来源,因为attr1可能是模型属性,而attr2可能是视图的属性,它进行某种计算。通过传入单个对象,您可以限制组件的灵活性。
除了灵活性之外,我倾向于选择长参数列表,因为很明显你的组件接受了什么;即使它有点冗长。如果你的组件采用了大量的参数列表,那么这可能是组件试图做太多的一个迹象,你可能想把它分解成更小的组件。
答案 1 :(得分:0)
App.MyComponentComponent = Ember.Component.extend({
attr1: function() {
return this.get('targetObject.attr1');
}.property('targetObject.attr1'),
attr2: function() {
return this.get('targetObject.attr2');
}.property('targetObject.attr2')
});
来自Ember docs: "如果组件当前插入父视图的DOM中,则此属性将指向父视图的控制器。"
谨慎使用。