Создать массив моделей, управляемых 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 я генерирую AddressModel из заданных элементов индекса массива. Затем я устанавливаю старый индексированный элемент в созданную Модель, и снова запускается событие arrayContentWillChange, повтор… рекурсия.
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].
https://github.com/emberjs/ember.js/pull/554 Предложение tomdale к оригинальному решению/сообщению об этой проблеме, кажется, обобщает лучше, чем реализация модели, представленная jedwood, однако в Backbone.js эта проблема решается с помощью специальной переменной модели, и я обнаружил, что она работает хорошо.
Как расширить ArrayProxy для преобразования всех входящих управляемых объектов в AddressModel?