リストのリストがあるSproutcoreを使用してUIをレンダリングしようとしています。関連する各アイテムに独自のアイテムのリストがあるデータの垂直リストがあります。私が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
}),
});
垂直リストの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
これが正しいかどうかはわかりません。そのため、テストデータに使用したフィクスチャでまだ適切に定義されていないものがある可能性があります。associcatedListOfDataフィールドに入力した情報は、HorizontalDataテーブルの要素のGUIDに合わせた数値の配列です。