1

既存のアプリを 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、無限ループで再度呼び出されるようです。

子供に空の配列を返すと、すべて正常に動作します。

なぜ私がこれを取得しているのか分かりますか?それを行う別の方法はありますか?

4

2 に答える 2

0

dataはすでに DS.Model のプロパティであり、おそらくgets... を介して呼び出されており、これが の再定義に入りdata、ループを引き起こしています。

于 2013-11-10T15:02:40.120 に答える