既存のアプリを Ember に変換するために、Ember モデルから D3.js データ構造を生成する方法を探しています。目標は、各タスクが 0 個以上のサブタスクを持つタスクのツリーを表示することです。
D3.js にフィードしたい結果は次のとおりです。
[
{
"parent": 429,
"name": "Parent task 1",
"id": 428
"children": [
{
"parent": 428,
"name": "Sub task 1",
"id": 425
},
{
"parent": 428,
"name": "Sub task 2",
"id": 426
}
]
},
...
]
私は自分のモデルを次のように定義しようとしました:
Minp.Task = DS.Model.extend({
name: DS.attr(),
subtasks: DS.hasMany('task'),
data: Ember.computed(function () {
return {
id: this.get('id'),
name: this.get('name'),
type: 'task',
children: this.get('subtasks').map(function (task) {
return task.get('data');
})
};
}).property()
});
しかし、「最大呼び出しスタック サイズを超えました」というエラーが表示されます。this
属性から呼び出すとdata
、無限ループで再度呼び出されるようです。
子供に空の配列を返すと、すべて正常に動作します。
なぜ私がこれを取得しているのか分かりますか?それを行う別の方法はありますか?