Ember组件操作和属性出价

时间:2014-12-11 22:32:38

标签: ember.js

我创建了多个包含事件和属性的ember组件。

MY-component.hbs

 <div>
  <button type="button" {{action 'ok'}}>{{accept-text}}</button>
 </div>

当我重用这个组件时(它们更复杂)我发现自己将组件动作与重复代码中的控制器动作结合起来。 (示例beloow将组件ok设置为控制器ok)。

{{#my-component accept-text='Ok' ok='ok' }}
// Custom code
{{/my-component}}

我的问题是:如果没有在模板上声明,那么在ember中是否存在将组件操作绑定到按名称匹配的特定控制器操作?这个例子看起来不错。但它是。当你声明了几个动作时。

2 个答案:

答案 0 :(得分:1)

声明组件中的默认值,如果在实例化中指定它,将覆盖它。

MyComponent = Ember.Component.extend({
  action: 'ok'
});

答案 1 :(得分:1)

如果您需要将许多操作传递到组件中,您可能需要考虑设计重构。但是如果你真的需要完成将一个控制器动作的整个列表发送到几个组件中,你可以像这样传入控制器本身(假设组件在控制器的把手文件中声明):

{{#my-component accept-text='Ok' controller=this }}
// Custom code
{{/my-component}}

然后在组件操作中执行以下操作:

actions: {
    ok: function()
    {
        this.sendAction(this.get('controller.ok'));
    }
}

这将完成您寻求的最小组件把手声明。