2013-10-07 1 views
1

В настоящее время я работаю над проектом Ember, где я получаю сложный ответ JSON в Routemodel. В соответствующем шаблоне я отображаю атрибуты ответа. Для некоторых из них есть определенные действия, которые приводят к изменениям в этой модели.Глубокая упаковка объектов ответа JSON в объектах Ember

Я хочу, чтобы эти изменения были непосредственно отражены в пользовательском интерфейсе, используя привязку Эмбера. К сожалению, при доступе к свойству ответа верхнего уровня в ObjectController с this.get('attributeFromJson') работает хорошо, попытка того же (или set) на одном из дочерних свойств не работает.

Я произвел следующую JSFiddle, чтобы продемонстрировать проблему: http://jsfiddle.net/KkD6U/

Я понимаю, что мне нужно, чтобы преобразовать ответ в Ember.Object вручную, чтобы извлечь выгоду из его Ember.Observable Mixin.

Мой вопрос: есть ли обычный способ Эмбер автоматически «глубоко обертка» в целом ответ JSON в структуру Ember.Object использовать get и set на весь ответ? Каким будет простой способ Эмбер?


Update:

В том же время, я построил простую функцию для преобразования простых объектов JS для объектов Поста, см jsFiddle здесь: http://jsfiddle.net/5vEcL/1/

Похоже ли это возможно?

ответ

0

Я понимаю, что мне нужно будет преобразовать ответ в объект Ember.Object вручную, чтобы извлечь выгоду из его Ember.Observable mixin.

В принципе да, если бы вы обернуть дочерние объекты в Ember.Object.create(...) он будет работать с связывающим механизмом Эмбера:

... 
anArray: [ 
    Ember.Object.create({ 
    id: '1', 
    anotherAttribute: '123' 
    }), 
    Ember.Object.create({ 
    id: '2', 
    anotherAttribute: '456' 
    }) 
] 
... 

Смотрите здесь ваш модифицированный jsfiddle из приведенного выше примера: http://jsfiddle.net/ZZFkA/

Надежда помогает.

+0

Спасибо, intuitivepixel, это было направление, в которое я тоже вдавался. Я редактировал свой вопрос, возможно, когда вы отвечали, см. Мой расширенный jsFiddle в конце вопроса. Основная проблема заключается в том, что простой 'Ember.Object.create (...)', похоже, не обертывает вложенные массивы/объекты, поэтому я специально просил «глубокую обертку». – digitalbreed

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