【发布时间】:2015-09-25 18:35:27
【问题描述】:
使用 vue.js 0.12。寻找将数据绑定到 d3 的最佳方法。在示例中,[materials] 最终保存了生成数据 D3 绘图的参数,这些数据使用 D3 绘制为不同的系列。我使用 vue 来管理用于生成数据的参数的输入/删除/编辑,并将这些参数传递给生成数据的函数,然后调用 D3 在指定的标签上绘图。
这行得通。我只是不知道我做得对不对。目前我正在做以下事情:
var test = new Vue({
el: '#materials',
data: {
materials: [],
},
ready: function() {
this.$watch("materials", function(value) {
// do some parsing and pass to D3
rock.test(JSON.parse(JSON.stringify(this.materials)));
}
});
},
// rest of vue commands
////////////////////////////////////////////////
// D3 plotting
(function(exports) {
// all my D3 code for handling the passed object from vue
// exports.test takes the parameters passed from vue, converts them into
// the data I want to plot, and calls D3 to plot multiple series
})(this.rock = {});
我正在使用 ready 函数来观察 vue 模型何时更新为要绘制的新系列,然后将数据对象传递给 D3。这是正确的方法,还是有更好的方法?缺点是我必须使用 vue.js 来跟踪数据的更新并重新绘制 D3 图表。如果我使用 D3 以交互方式处理从图表中删除数据,在我的用例中,我与 vue 模型不同步(不确定如何将 D3 链接到 vue 数据模型)。
建议绝对赞赏。
【问题讨论】:
标签: javascript d3.js vue.js