Я хочу иметь вычисленное свойство в классе, которое зависит от свойства (массив строк) того же класса. Я хочу, чтобы это вычисляемое свойство зависело только от определенного элемента массива.Вычисленное свойство Ember.js с зависимостью от элемента свойства массива
На самом деле, я бы не прочь, если это зависит от всех элементов массива.
Я Тлеющей определяется следующим образом:
var UpdateController = Ember.ArrayController.extend({
PANE_1: 0,
PANE_2: 1,
PANE_3: 2,
init: function() {
this._super();
this.set('paneClass', ["center", "right", "right"]);
},
channelsPaneClass: function() {
return this.get('paneClass')[this.get('PANE_1')];
}.property('[email protected]'),
}
Это вычисленное свойство используется в шаблоне следующим образом:
<div {{bind-attr class=":sf-seg-pane channelsPaneClass"}}></div>
Это выводит следующий HTML:
<div class="sf-seg-pane center"></div>
Пока, так хорошо. Однако, если я теперь изменить значение элемента paneClass[PANE_1]
, например так:
this.get('paneClass')[this.get('PANE_1')] = "xxx";
Я ожидавшую HTML, чтобы изменить в:
<div class="sf-seg-pane xxx"></div>
Но это не так.
Что еще я пробовал:
- Я пытался указать зависимость свойства как
.property('paneClass')
. - Я пробовал использовать
{{bind-attr class=":sf-seg-pane paneClass[0]"}}
в шаблоне. - Я видел this, в котором описывается способ сделать это, когда наш массив представляет собой массив объектов. Я не вижу никакого примера для массива примитивных типов данных.
Работает как очарование! Спасибо за ваше время. Если вы не возражаете, это где-то документально. Я работаю в течение нескольких часов. Наконец, я использовал обходные пути с участием объектов, описанных здесь: http://emberjs.com/guides/object-model/computed-properties-and-aggregate-data/ –
Добро пожаловать. О 'insertAt' единственное место, которое я знаю, это [документация] (http://emberjs.com/api/classes/Ember.MutableArray.html#method_insertAt). –
Извините, я имел в виду синтаксис 'paneClass. []'. –