尝试使用registry.byId设置内容窗格的内容,但我无法获取该对象 - 我收到以下错误:
JavaScript运行时错误:无法获取未定义或空引用的属性“set”
我的代码是这样的:
require(["dojo/parser", "dojo/dom", "dijit/registry",
"dojox/layout/ContentPane", "dojo/domReady!"],
function (parser, dom, registry) {
parser.parse();
registry.byId("Content").set("content", "Test Content");//Content ID is not being found
});
</script>
<div data-dojo-type="dijit/layout/BorderContainer" id="Main" style="width: 100%; height: 100%">
<div data-dojo-type="dojox/layout/ContentPane" id="TOC" data-dojo-props="splitter: true, region:'leading'">
TOC
</div>
<div data-dojo-type="dojox/layout/ContentPane" id="Content" data-dojo-props="splitter: true, region:'center'">
</div>
有什么想法吗?谢谢!
答案 0 :(得分:1)
我认为小部件正在创建过程中,当您调用 registry.byId()调用时,它们还没有准备好。
您需要通过包含“dojo / ready”模块在ready()调用中添加初始化代码。
require(["dojo/parser", "dojo/dom", "dijit/registry", "dojo/ready",
"dojox/layout/ContentPane"],
function (parser, dom, registry, ready) {
parser.parse();
ready( function(){
// your code goes here.
registry.byId("Content").set("content", "Test Content");
});
}
});
答案 1 :(得分:0)
值得注意的是,自dojo 1.8以来,parser.parse()
调用返回array with a Promise mixed in,因此推荐的与解析对象交互的方式是
parser.parse().then(function(){
registry.byId('content'.set('content','test content');
});
使用dojo / ready应该会达到同样的效果。