【问题标题】:Ember component actions and properties bidingEmber 组件操作和属性投标
【发布时间】:2014-12-11 22:32:37
【问题描述】:

我已经创建了多个带有事件和属性的 ember 组件。

my-component.hbs

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

当我重用这个组件(它们更复杂)时,我发现自己以重复代码的形式将组件操作与控制器操作相提并论。 (以下示例将组件 ok 绑定到控制器 ok)。

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

我的问题是:如果没有在模板上声明,是否有任何方式将组件操作绑定到按名称匹配的特定控制器操作?这个例子看起来不错。但它是。当您声明了多个操作时。

【问题讨论】:

    标签: ember.js


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      然后在组件动作中这样做:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-26
        • 2016-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多