有时候,当我使用“Dojo”时,我改变了一些事情并且工作,但我不知道为什么。它以这种方式工作。 “parse.parse()”部分在代码结束后运行。
这是小提琴
parser.parse();
问题实际上似乎是templatepicker或Accordion。如果我从应用程序中删除它可以正常工作,所以我的计划是确保,解析器只在一切都完成后运行 - 包括像 layers-add-result 。
layers-add-result
由于我的应用程序已经模块化为mapLoader,小部件,服务等,我决定将mapLoader重构为延迟对象。
define([/*...*/, function(){ var init = function() { return $.when(function(){ //bootstrap map //bootstrap widgets //create new Deferred object var dfd = $.Deferred(); function initEditing() { /*hook up the rest*/ //resolve promise once the templatepicker is up and running dfd.resolve(); } //return promise return dfd.promise(); }) }; return {init: init} }])
现在有了这个,我可以在我的启动文件中继续并调用:
define([ "dojo/parser", "app/components/mapLoader.public", "dojo/domReady!" ], function (parser, MapLoader ) { //entry point into the application //authentication, configuration etc. omitted MapLoader.init().done(function () { parser.parse(); }); });
这是我到目前为止发现的唯一方法,以确保在解析器实际运行并执行其黑魔法之前加载每个小部件。现在我只需要清理所有内容并用dojo实现替换jQuerys defferred对象。
仔细查看HTML文件(使用autoSelect = true和不使用),我可以看到没有autoselect = true,你的网格没有得到正确的宽度。这是网格的HTML版本。如果你看到元素'dojoxGridHeader',宽度是0px,但与autoselect = true一样,它将变为'width = 178px'。所以检查你的CSS也可以在加载该协议容器时使用grid.startup()。希望能帮助到你。
<div hidefocus="hidefocus" role="grid" dojoattachevent="onmouseout:_mouseOut" tabindex="0" class="dojoxGrid grid" id="dojox_grid_DataGrid_0" align="left" widgetid="dojox_grid_DataGrid_0" aria-readonly="true" style="height: auto; width: 1px; user-select: none;"> <div class="dojoxGridMasterHeader" dojoattachpoint="viewsHeaderNode" role="presentation" style="display: block; height: 0px;"><div class="dojoxGridHeader" dojoattachpoint="headerNode" role="presentation" style="display: none; width: 0px; left: 1px; top: 0px;"> <div dojoattachpoint="headerNodeContainer" style="width:9000em" role="presentation"> <div dojoattachpoint="headerContentNode" role="row"><table class="dojoxGridRowTable" border="0" cellspacing="0" cellpadding="0" role="presentation"><tbody><tr><th tabindex="-1" aria-readonly="true" role="columnheader" id="dojox_grid_DataGrid_0Hdr0" class="dojoxGridCell " idx="0" style="width:6em;"><div class="dojoxGridSortNode">cell0</div></th><th tabindex="-1" aria-readonly="true" role="columnheader" id="dojox_grid_DataGrid_0Hdr1" class="dojoxGridCell " idx="1" style="width:6em;"><div class="dojoxGridSortNode">cell1</div></th></tr><tr><th tabindex="-1" aria-readonly="true" role="columnheader" id="dojox_grid_DataGrid_0Hdr2" colspan="2" class="dojoxGridCell " idx="2" style=""><div class="dojoxGridSortNode">groupName</div></th></tr></tbody>