我可以从Ember {{action}}访问HTML el(按钮)吗?

时间:2014-05-12 18:57:13

标签: ember.js

我需要对触发Ember操作的HTML元素采取行动。

场景很简单,假设我有多行项目,每个项目都有一个动作,通过ajax提取一些数据。我想在ajax请求完成之前禁用该特定元素。

我检查了this属性,但它引用了Component Class。

所以在下面的标记中,我想捕获组件类中的元素。

<td><button {{action 'cancel' transaction}} class="btn-danger btn">Cancel</button></td>

1 个答案:

答案 0 :(得分:0)

在Ember中没有默认的禁用操作的方法。

您可以通过多种方式实现这一目标:

1)使用CSS和绑定控制器属性。

a.is-inactive {
  pointer-events: none;
  cursor: default;
}

然后,您必须将className绑定到控制器属性(非活动)。

<a {{action 'cancel'}} {{bind-attr class="isInactive:is-inactive"}}

2)您可以检查您的路线操作是否禁用了您的操作。使用任何特定的控制器来保存应用程序状态。

  cancel: function() {
       var controller = this.controller;
       if ( controller.get('pendingAction') ) return;

       controller.set('pendingAction', true);
       this.ajax(...., function() {
         ....
         controller.set('pendingAction', false);
       }, function() {
         ....
         controller.set('pendingAction', false);
       });

    }

3)建立自己的方式..

我在discourse forum讨论了这个案例。