Ember.js ArrayProxy Массив моделей

Цель

Создать массив моделей, управляемых ArrayController (ArrayProxy). Требования

Используйте абстракцию ArrayController (ArrayProxy) для инкапсуляции массива Преобразовывать входные объекты в ArrayProxy автоматически при вставке в ArrayProxy. Не лениво преобразовывать во время доступа

Примеры структур данных

App.AddressModel = Ember.Object.extend({
    address_name: null,
    address: null,
    printme: function() {
        console.log("Just making sure the array turned into an AddressModel");
    },
});

App.addressArray = Ember.ArrayProxy.create({
    transformFrom: function(item) {
    },
    transformTo: function(item) {
    },
    arrayContentWillChange: function(startIdx, removeAmt, addAmt) {
    },
});

Неудачные попытки

динамическое свойство

Кто-то на IRC-канале упомянул попытку динамических свойств. Это привело к тому, что казалось логическим и эмпирическим свидетельством, рекурсивным результатом. Без сомнения, из-за создания контента как динамически генерируемой переменной, так и переменной «триггер/экспорт».

arrayContentWillChange

Снова кажущийся рекурсивным результат. После получения уведомления arrayContentWillChange я генерирую AddressModel из заданных элементов индекса массива. Затем я устанавливаю старый индексированный элемент в созданную Модель, и снова запускается событие arrayContentWillChange, повтор… рекурсия.

transformFrom/transformTo

https://github.com/emberjs/ember.js/pull/554#issuecomment-5401112 tomdale упоминает в сообщении выше, чтобы попробовать использовать transformFrom и transformTo для приведения входящих и/или исходящих данных. Эти функции, похоже, не существуют [http://cloud.github.com/downloads/emberjs/ember.js/ember-0.9.8.js].

Патч модели ArrayProxy

https://github.com/emberjs/ember.js/pull/554 Предложение tomdale к оригинальному решению/сообщению об этой проблеме, кажется, обобщает лучше, чем реализация модели, представленная jedwood, однако в Backbone.js эта проблема решается с помощью специальной переменной модели, и я обнаружил, что она работает хорошо.

Вопрос

Как расширить ArrayProxy для преобразования всех входящих управляемых объектов в AddressModel?

5
задан chrism 24 May 2012 в 18:31
поделиться