我正在寻找一种从 Ember 模型生成 D3.js 数据结构的方法,以将我现有的应用程序转换为 Ember。目标是显示任务树,每个任务有 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
属性调用会导致在无限循环中再次调用它。
如果我为孩子返回一个空数组,一切正常。
你知道我为什么会得到这个吗?这是另一种方式吗?