在Ext JS 4.2中创建D3可折叠树

时间:2015-05-13 10:45:36

标签: javascript extjs d3.js

我有以下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

有人可以帮助我理解为什么会这样,以及如何解决这个问题。

谢谢

1 个答案:

答案 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);