各タブにカスタム ウィジェットを配置する 2 つのタブバー (dojox.mobile.TabBarButton) があります。2 番目のタブでは、ウィジェットは datagrid を使用して 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>
デバッグ後、問題はビューからのサイズ変更方法である可能性があることがわかりました。データグリッドが選択解除されたタブバーに配置されると、幅と高さが 0 に設定されます。resize メソッドを明示的に呼び出しても効果はありません。誰でも私に手がかりを与えることができますか?