在 jsfiddle 中从 Ext JS 调用 D3
Calling D3 from Ext JS in jsfiddle
我有以下 D3 代码,它按预期工作。
``http://jsfiddle.net/6Ldad16n/3/
现在,我需要从 Ext JS 代码中 运行 这个。所以我为此
创建了另一个fiddle
``http://jsfiddle.net/07kk8fzs/
我相信还需要其他一些东西才能让它在 Ext JS 中运行,因为显示的结果是空白的,并且控制台中没有错误。
有人可以帮我解决这个问题吗?
谢谢
你不应该覆盖 afterRender
方法(它是一个私有方法,因此你不应该依赖它的存在),而是把它放在你的 initComponent
方法中:
this.on('afterrender', function(){
this.loadScript(this.onD3Loaded, this);
}, this);
您的代码无需此修改即可正常工作,但最佳做法是添加您自己的事件侦听器而不是覆盖框架的。
此外,您的代码只定义了您的d3.widgets.Treeview
class,并没有实例化它。尝试在 Ext.define
:
之后将其添加到您的代码中
Ext.create('d3.widgets.Treeview', {
renderTo : Ext.getBody()
});
我测试过将它添加到您的 fiddle,但其他东西会引发错误,而且我对 D3 的了解不足以调试它
我有以下 D3 代码,它按预期工作。
``http://jsfiddle.net/6Ldad16n/3/
现在,我需要从 Ext JS 代码中 运行 这个。所以我为此
创建了另一个fiddle``http://jsfiddle.net/07kk8fzs/
我相信还需要其他一些东西才能让它在 Ext JS 中运行,因为显示的结果是空白的,并且控制台中没有错误。
有人可以帮我解决这个问题吗?
谢谢
你不应该覆盖 afterRender
方法(它是一个私有方法,因此你不应该依赖它的存在),而是把它放在你的 initComponent
方法中:
this.on('afterrender', function(){
this.loadScript(this.onD3Loaded, this);
}, this);
您的代码无需此修改即可正常工作,但最佳做法是添加您自己的事件侦听器而不是覆盖框架的。
此外,您的代码只定义了您的d3.widgets.Treeview
class,并没有实例化它。尝试在 Ext.define
:
Ext.create('d3.widgets.Treeview', {
renderTo : Ext.getBody()
});
我测试过将它添加到您的 fiddle,但其他东西会引发错误,而且我对 D3 的了解不足以调试它