0
我正在使用D3从Json数据源渲染成ExtJs组件。d3.select在ExtJs中返回空文档
从的test.html:
<html>
<head>
<title>Test</title>
<script type="text/javascript" src="http://mbostock.github.com/d3/d3.js"></script>
<script type="text/javascript" src="http://docs.sencha.com/ext-js/4-0/extjs/ext-all.js"></script>
<script type="text/javascript" src="Test.js"></script>
</head>
<body>
<script type='text/javascript'>
Ext.onReady(function(){
Ext.create('Ext.panel.Panel',
{
layout: 'fit',
renderTo: Ext.getBody(),
items: [
{
xtype: 'panel',
html : 'There should be a test below this'
},
{
id: 'testPanel',
xtype: 'xxxviewtest'
}
]
});
d3.json("Test1.json", function(json) { Ext.getCmp ('testPanel').deliverJson (json); });
});
</script>
</body>
</head>
和Test.js:
Ext.define('xxx.view.Test', {
extend: 'Ext.Component',
alias: 'widget.xxxviewtest',
deliverJson: function(json) {
var target = d3.select("#" + this.id);
if (target[0][0]) {
// install svg element and draw
...
}
}
});
在简单的测试情况下,这是工作的罚款,但在一个更加复杂的文档案件涉及标签面板和大量的的UI组件,在Test.js中对d3.select的调用返回一个空选择。
我需要做什么才能正确工作?
我将调用d3.json(...)转移到Ext层次结构中的按钮单击处理程序,它工作正常。我有一种感觉,它会是这样的,但我也(错误地)认为Ext.create(...)调用将在它在Ext.onReady(...)方法后的同步WRT调用。 – BrettonW