Я хочу наблюдать изменения внутри объекта Ember, созданного внутри Ember Service.Наблюдать за изменениями в внутреннем массиве Ember Object
export default Ember.Service.extend({
internalCache: Ember.Object.create(),
setInternalCache: function setTestObj(itemId, relation, content) {
let arr, myarr, ref, internalCache;
internalCache = this.get('internalCache');
if (!((ref = internalCache[itemId]) != null ? ref[relation] : void 0)) {
internalCache[itemId] || (internalCache[itemId] = {});
internalCache[itemId][relation] = [];
}
arr = Ember.copy((internalCache[itemId][relation]), false);
content.map(function (elem) {
return arr.pushObject(elem);
});
myarr = internalCache[itemId][relation];
myarr.replace(0, arr.length, Ember.copy(arr, false));
}});
The internalCache свойств объекта можно наблюдать, но этот объект будет в конечном итоге будет заполнен внутренним объект с несколькими свойствами, чтобы быть массивами. Я хочу наблюдать изменения, когда элементы добавляются/удаляются на этих массивах. Скажем, структура, как:
internalCache: {
"identifier12": {
attachments: [1, 2],
children: [ ... ]
}
}
вложение свойства массива устанавливается с помощью setInternalCache функции и успешно модифицирует вложения свойства массива внутри свойства identifier12 из internalCache.
То, что я пытался до сих пор:
cache: Ember.inject.service('cache');
itemAttachmentsObserver: Ember.observer('cache.internalCache.identifier12', function() {
console.log('foo');
}).on('init')
Чтобы увидеть, если вложенные модифицированные реквизита не вызовет наблюдателя, ничего.
itemAttachmentsObserver: Ember.observer('[email protected]', function() {
console.log('bar');
}).on('init')
и
itemAttachmentsObserver: Ember.observer('[email protected][]', function() {
console.log('baz')
}).on('init')
Но я не могу сделать триггер наблюдателя при вложения массива изменяется.