Я пытаюсь отобразить пользовательский интерфейс с помощью Sproutcore, где у меня есть список списков. Существует вертикальный список данных, в котором каждый связанный элемент имеет собственный список элементов. Я настроил модели так, как считаю нужным, исходя из того, что я знаю о Sproutcore.
Модель:
App.VerticalData = SC.Record.extend({
someField: SC.Record.attr(Boolean),
associatedListOfData: SC.Record.toMany("App.HorizontalData", {
inverse: "vertical",
isMaster: YES
})
});
App.HorizontalData = SC.Record.extend({
someForeignKeyField: SC.Record.attr(Number),
vertical: SC.Record.toOne("App.VerticalData", {
inverse: "associatedListOfData",
isMaster: NO
}),
});
Я добавил subView в ListItemView вертикального списка и изменил подкласс так, чтобы он располагал элементы в горизонтальном списке... ну... горизонтально. У меня проблема в том, что единственный способ, которым я могу получить данные из отношения toMany() для привязки к этому горизонтальному списку, - это сделать следующее для каждого элемента в вертикальном списке.
horizontalListView.set('content', App.store.find(SC.Query.local(App.HorizontalData, {
conditions: 'someForeignKeyField = ' + keyValueOfVerticalItem)
})));
Это мучительно, прискорбно медленно. Я не понимаю, почему я не могу просто использовать результаты вычисляемого свойства для поля toMany() для текущего элемента вертикального списка. Может ли кто-нибудь дать некоторые рекомендации здесь? Возможно, я пропускаю что-то глупое.
Если я попытаюсь получить доступ к свойству напрямую, я получу следующий результат:
Object
SproutCore18001994610927067697: "sc1271"
__sc_super__: Object
_bindings: Array[0]
_kvo_cacheable: true
_kvo_changeLevel: 0
_kvo_changes: null
_kvo_cloned: Object
_kvo_content_observed_keys: Object
_kvo_dependents: Object
_kvo_revision: 2
_object_toString: "SC.ManyArray:sc1271"
_observableInited: true
_observers: Array[0]
_prevStoreIds: Array[167]
_properties: Array[15]
_records: null
bindings: Array[0]
manyAttribute: Object
outlets: Array[0]
propertyName: "associatedListOfData"
propertyRevision: 2
record: Object
recordType: App.HorizontalData
__proto__: Object
Я не знаю, выглядит ли это правильно или нет. Так что вполне возможно, что у меня есть что-то, что еще не определено должным образом в FIXTURES, которые я использовал для своих тестовых данных. Информация, которую я помещаю в поле associcatedListOfData, представляет собой массив чисел, которые соответствуют идентификаторам GUID для элементов в таблице HorizontalData.