我有两个标签栏(dojox.mobile.TabBarButton),我在每个标签上放置了自定义小部件。在第二个选项卡上,小部件使用数据网格来显示 JSON 数据。这是我遇到问题的地方。数据网格的数据正在正确加载,并且 DOM 节点也已形成,但数据网格本身并未显示。然而,当我把它放在第一个标签上时,它会产生奇迹。这是我的 JS 代码。
var gridDataUrl = "gridData.json";
var params = {
url: gridDataUrl,
handleAs: "json"
};
var resultGridNode = this.resultGridNode;
dojo.xhrGet(params).then(function(response){
var gridData = response;
var data = {
label: gridData.identifier,
identifier: gridData.identifier,
items: gridData.items
};
var store = new dojo.data.ItemFileReadStore({
data: data
});
var dg = new dojox.grid.DataGrid({
id: "grid",
store: store,
structure: gridData.structure
}, resultGridNode);
dg.resize();
dg.startup();
});
自定义模板:
<div data-dojo-type="dijit.layout.BorderContainer" style="width: 100%; height: 100%">
<div data-dojo-attach-point="resultGridNode" style="height: 600px; width: 400px">
</div>
</div>
我附加小部件的父模板:
<div id="tabView1" data-dojo-type="dojox.mobile.View" data-dojo-props="selected: true" style="height: 100%;">
<h1 data-dojo-type="dojox.mobile.Heading">Result</h1>
<div data-dojo-type="dojox.mobile.RoundRect" style="height: 100%" class="mblRoundRect">
<div data-dojo-attach-point="resultgrid"></div>
</div>
</div>
经过调试,我发现问题可能是视图中的resize方法。当数据网格放在取消选择的标签栏上时,宽度和高度设置为0。显式调用resize方法没有任何效果。谁能给我一个线索?