2014-02-12 36 views
1

Ember.js的新功能。如何让组件从控制器继承几个属性?

我想创建强大的组件,将委派给各种属性的控制器。我知道我可以像这样绑定各个属性,但看起来很冗长。

{{#my-component attr1=attr1 attr2=attr2}} 
    Hello 
{{/my-component}} 

看起来好像它可能是一个普遍的情况想要委托一切到控制器。有推荐的模式吗?

回答

0

您的示例代码将被视为正确的方式。

你可以在技术上通过在一个单一的对象(可能来自控制器组成),但我会建议针对。 A组分真的不应该很了解其中的数据是从作为attR1位可能是一个模型属性和attR2可能是和做某种计算的视图的属性来。通过传入单个对象,可以限制组件的灵活性。

除了灵活性,我倾向于选择长期参数列表,因为它是明确你的组件接受的东西;即使它有点冗长。如果您的组件正在一个巨大的参数列表它可能是一个迹象,表明组件试图做太多,你可能想要把它分解成更小的组件。

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中,此属性将指向父视图的控制器”。

请谨慎使用。