2012-06-11 3 views
0

Я новичок в ember, и я все еще получаю свои sealegs под меня с помощью рамки. До сих пор я думаю, что это замечательно, за исключением того, что я не могу понять: как связать свойство элемента массива с атрибутом смежного элемента массива.Свойства связывания с соседними элементами в arraycontroller

Детали:

Моя модель как так:

App.SRDate = Ember.Object.extend({ 
    timeValue: null, 
    reductionAmount: null, 
    id: null, 
    index: null, 
    date: Ember.computed(function(){return formatted date as a string}).property('timeValue') , 
    previousDate: ??? 
}); 

И у меня есть простой arraycontroller, что просто держит список указанных объектов. То, что я пытаюсь сделать, это позвонить по телефону App.dates.objectAt(1).get('previousDate') и вернуть его App.dates.objectAt(0).get('date'). Сначала я получил эту работу, используя вычисляемое свойство для предыдущегоDate, но оно будет обновляться только тогда, когда я изменил элемент в связанном объекте (т. Е. Если бы я изменил дату объекта 0, он не обновлялся бы в previousDate для объекта 1 пока я не изменил дату в объекте 1, что заставило ember переоценить вычисляемое свойство). Если есть способ определить, с какими объектами связаны вычисляемые свойства, то это, вероятно, сделало бы трюк, однако я не думаю, что это то, что рассчитанные свойства действительно должны использоваться для ...

I также попробовал переплёт как:

previousDateBinding: 'App.dates.getObject('+this.get('index')-1+').date' 

но это тоже не сработало.

Заранее благодарим за помощь.

+1

Не могли бы вы предоставить более подробную информацию о том, что вы пытаетесь сделать, для чего вам нужно это сделать? – ebryn

+0

Ya Я работаю над системой оценки для онлайн-платформы тестирования. В принципе, это позволяет профессору настроить его, чтобы учащиеся могли пройти тест на определенное количество времени для получения полного кредита, а затем уметь принимать его на определенное количество времени на 80%, затем на 60 % и т. д. В этом случае для ui будет использоваться ссылка previousDate, поэтому она будет в основном говорить: «От {{предыдущий]} до {{date}} удалять {{reduceAmount}} точки". Я могу, вероятно, использовать какой-то помощник вида для выполнения того же действия, но изначально полагал, что может быть проще сделать это таким образом. Спасибо за помощь – AWTrost

+0

Также по первому элементу массива предыдущая дата вернет последний день получить полный кредит. – AWTrost

ответ

0

Просто была аналогичная проблема, вот как я ее решил: http://jsfiddle.net/aMQU6/1/

В моей ArrayController, у меня есть функция, отслеживающего изменения в мое содержание. Затем, как только он добавлен, я устанавливаю свойство в новом объекте как предыдущий объект, а затем привязываю дату предыдущего объекта к свойству previousDate в добавленном объекте.

Надеюсь, это помогло! Дайте знать, если у вас появятся вопросы.

Смежные вопросы