dijit .startup()之后的Dojo Horizo​​ntalLinearGauge

时间:2013-10-08 16:11:38

标签: javascript dojo

我正在尝试使用以下代码创建Dojo布局:

require([ 'dijit/registry', 'dijit/layout/BorderContainer', 'dijit/layout/TabContainer', 'dijit/layout/ContentPane', 'dojo/store/Memory', 'gridx/core/model/cache/Sync', 'gridx/Grid', 'dojox/dgauges/components/default/HorizontalLinearGauge', 'dojox/charting/Chart', 'dojo/domReady!' ], function(
  registry,
  BorderContainer,
  TabContainer,
  ContentPane,
  Memory,
  Sync,
  Grid,
  HorizontalLinearGauge,
  Chart
) {
Layout = new BorderContainer({
  'design' : 'headline',
  'class': 'borderContainerLayout'
}, 'dashboardLayout');
Layout.addChild(new ContentPane({
  'id': 'layoutRight',
  'region' : 'right',
  'content': '<div id="days-between-purchases"></div>',
  'splitter': true
}));
Layout.startup();
var hlg = new HorizontalLinearGauge({
  'title': 'Purchase Cycle (Average # of days between purchases)',
  'srcRefNode': 'abc',
  'value': 20,
  'class': 'gauge',
  'noChange': true,
  'width': 150,
  'height': 150,
  'min': 0,
  'max': 100,
}, registry.byId('days-between-purchases'));
hlg.render();

有更多的代码可以向BorderContainer添加中心,左边等,但我得到的问题是“无法获取未定义或空引用的属性'nodeType'。从当时捕获的DOM中,它似乎布局还没有呈现到DOM中,所以它找不到registry.byId('days-between-purchases')。我尝试了大约10种不同的方法尝试将它们放在一起以在运行期间呈现布局和规格时间并大量搜索解决方案,但什么都没有。

我做错了什么?您是否知道如何在运行时使用仪表完全呈现布局的教程?示例代码?

先谢谢。

仅供参考:我正在使用最新版本的dojo与此dojoConfig:

var dojoConfig = {
baseUrl : "//ajax.googleapis.com/ajax/libs/dojo/1.9.1/",
async : true,
isDebug : true,
parseOnLoad : false,
//gfxRenderer: "svg,silverlight,vml",

packages : [ {
  name : "dojo",
  location : "dojo"
}, {
  name : "dijit",
  location : "dijit"
}, {
  name : "dojox",
  location : "dojox"
}, {
  'name': 'gridx',
  'location': '/resources/common/javascript/gridx'
}]

};

1 个答案:

答案 0 :(得分:1)

您的样本似乎无法完全运行,很难理解发生了什么?特别是我不认为仪表有一个render()方法,你在它上面调用渲染吗?

在dojox / dgauges / tests / test_all.html中,您将找到一个测试,显示BorderContainer中使用的仪表。也许它可以提供帮助。