1

次のようにネストされたデータ構造があります。

Job:{  
     JobId: 1,  
     NumberTrackr: 2,  
     Trackrs: [  
                1 : { TaskTrackrID: a, 
                      NumberSlots:1, 
                      slots: [
                             slot1: {uniqueId:foo, you: get, the:[point, by, now]}
                              ]
                    },
                2 : { TaskTrackrID: b, 
                      NumberSlots:1, 
                      slots: [
                             slot1: {uniqueId:bar, you: get, the:[point, by, now]}
                              ]
                    }
            ]
} 

そして、私のアプリケーションは、このデータ階層 (特定の Trackr の「子」の foo 属性の合計を計算する) と、各データ レベル全体を使用します (たとえば、「親」の TaskTracker に関係なく、すべてのスロットのコンテンツから統計を計算します)。 .

Ember は初めてですが、各オブジェクト レベル (TaskTrackr、Slot など) のモデルを作成することを考えていました。このモデルは、ある種のサブモデルの配列に加えて、上記のすべての属性で構成されます (arraycontroller を使用しますか?)。このサブモデルには、サブモデルの独自の配列だけでなく、属性も含まれます。上位レベルのオブジェクトが、そのサブオブジェクトから計算された計算されたプロパティを持つことができることが重要です。また、各レベル全体にアクセスして特定の属性を変更できることも重要です。

このデータにツリーとレベルの両方でアクセスできるようにするコードはどのようなものになるでしょうか?

手伝ってくれてどうもありがとう

4

1 に答える 1

2

EmberDataを見てください。これらのタイプの関係をサポートします。

App.Job = DS.Model.extend({
  trackers: DS.hasMany('App.Tracker')
})

App.Tracker = DS.Model.extend({
  job: DS.belongsTo('App.Job');
})

// ... and so on

var job = App.Job.createRecord();
job.get('trackers').pushObject(App.Tracker.createRecord());

ただ注意してください。使用について言及しArrayControllerましたが、Emberアプリケーション内で使用する可能性があります。ただし、データ/関係をモデル化するときは、コントローラーを使用しません。上に貼り付けたものを、使用するだけで実行できるはずです。DS.Model

于 2012-09-18T03:16:26.643 に答える