我有以下D3代码,它按预期工作。树被渲染,可以在单击节点时展开和折叠。
``http://jsfiddle.net/6Ldad16n/3/
现在,我需要在Ext JS代码中运行它。所以我为这个
创造了另一个小提琴``http://jsfiddle.net/07kk8fzs/2/
在Ext JS版本中,我无法折叠树。折叠需要从更新函数内部调用更新函数,这会产生错误
this.update(d);
-
Uncaught TypeError: this.update is not a function
有人可以帮助我理解为什么会这样,以及如何解决这个问题。
谢谢
答案 0 :(得分:1)
您需要将范围存储在构造函数的属性中,然后使用它在update函数中调用“update”。这是你的小提琴:http://jsfiddle.net/kqr57ad3/
Ext.define("d3.widgets.Treeview", {
extend: 'Ext.Panel',
alias: 'widget.d3_treeview',
tree: '',
svg: '',
duration: 1000,
diagonal: '',
i: 0,
me: null,
constructor: function (config) {
console.log('1) Tree View Constructor called');
this.callParent([config]);
console.log("Treeview - constructor FINISH");
me = this;
},
然后在更新函数内使用此引用:
me.update(d);