如果ArrayController在Ember中不包含Models,则使用bindAttr禁用按钮

Und*_*ion 2 binding templates ember.js

我有一个包含按钮的模板:

<button {{action clearAll}} >Clear All</button>
Run Code Online (Sandbox Code Playgroud)

模板的Controller是一个ArrayController.如果ArrayController的content属性包含零项,我希望禁用该按钮.

Und*_*ion 7

答案是使用计算属性.计算属性允许您基于Controller状态而不是原始布尔属性进行计算(实质上是创建由多个属性或不同类型的属性支持的getter).

为了使此函数正确触发绑定,您需要声明函数所依赖的属性 - 如果修改了哪些属性应该导致更新.你这样做:`.property('content.length')'.在这种情况下,函数依赖于单个属性,但它可能依赖于多个属性.

在模板中:

<button {{action clearAll}} {{bindAttr disabled="anyEntries"}}>Clear All</button>
Run Code Online (Sandbox Code Playgroud)

在控制器中:

  anyEntries: function() {
    return this.get('content.length') == 0;
  }.property('content.length')
Run Code Online (Sandbox Code Playgroud)