我有一个包含按钮的模板:
<button {{action clearAll}} >Clear All</button>
模板的 Controller 是一个ArrayController
. 如果 ArrayController 的 content 属性包含零项,我希望禁用该按钮。
答案是使用计算属性。计算属性允许您基于控制器状态而不是原始布尔属性进行计算(本质上是创建由多个属性或不同类型的属性支持的 getter)。
为了使此函数正确触发绑定,您需要声明该函数所依赖的属性 - 如果修改了哪些属性应该导致更新。你可以使用:`.property('content.length')'。在这种情况下,函数依赖于单个属性,但它可能依赖于多个属性。
在模板中:
<button {{action clearAll}} {{bindAttr disabled="anyEntries"}}>Clear All</button>
在控制器中:
anyEntries: function() {
return this.get('content.length') == 0;
}.property('content.length')