2013-03-21 1 views
2

У меня есть шаблон, который содержит кнопку:Использование bindAttr, чтобы отключить кнопку, если ArrayController не содержит модели в Ember

<button {{action clearAll}} >Clear All</button> 

Контроллер шаблона является ArrayController. Я хотел бы, чтобы кнопка была отключена, если свойство содержимого ArrayController содержит нулевые элементы.

+0

возможный дубликат [Binding разрешенное состояние кнопки в ember.js] (http://stackoverflow.com/questions/ 9867696/связывание с поддержкой-состояние кнопки-в-угольком-JS) – givanse

ответ

7

Ответ заключается в использовании computed properties. Вычисляемые свойства позволяют делать расчет на основе состояния контроллера, а не с необработанным логическим свойством (по существу создавая геттер, поддерживаемый несколькими свойствами или свойством другого типа).

Чтобы эта функция правильно срабатывала привязки, вам необходимо объявить, какие свойства зависит от функции: какие свойства должны вызывать обновление, если они изменены. Вы делаете это, используя: `.property ('content.length') '. В этом случае функция зависит от одного свойства, но она может зависеть от нескольких.

В шаблоне:

<button {{action clearAll}} {{bindAttr disabled="anyEntries"}}>Clear All</button> 

В контроллере:

anyEntries: function() { 
    return this.get('content.length') == 0; 
    }.property('content.length') 
Смежные вопросы