在Ember.js应用程序中渲染D3图形

时间:2013-05-23 22:16:22

标签: ember.js d3.js

我正在使用D3.js强制布局根据ember.js模型中的数据绘制节点和链接图。我有一个App.Device模型和一个App.Interface模型(网络设备和网络接口),所以我只需要App.Device.find()App.Interface.find()并迭代返回的数据,以便生成要渲染的节点/链接。

除此之外,不是那么快。 Ember中的所有内容都是异步的。我查看Access model association from view - 但使用观察者意味着它只在模型更改时重绘...而不是在路线导航到时。我也无法弄清楚如何得到一个两个发现的结果的模型,因此只能在我的两个结果之一上有观察者。

我还找到了emberjs view with raphael or d3 - 但那里的所有链接似乎都已死/过时。

1 个答案:

答案 0 :(得分:0)

我发现做我想做的最简单的方法是在路线中创建一个伪复合模型:

App.NetworkmapRoute = Ember.Route.extend({
   model: function() {
      return Ember.Object.create({
         devices: App.Device.find(),
         interfaces: App.Interface.find()
      });
   }
});

然后我可以在控制器上创建计算属性(必须ObjectController)并在视图中使用观察者观察那些控制器属性并进行绘制。这似乎有效。