场景:最近需要在动态生成dojo widget,但是与以前不同的是,新建的这几个dojo widget是在一个dijit.layout.BorderContainer下层,包含一些只有container dojoType的region属性。
具体实现方案:
- varcR=dijit.byId("cR");
- varns=newntms.s.SN();
- ns.attr("region","top");
- ns.attr("class","s_n");
- cR.addChild(ns);
- cR.startup();
解释如下:
1,第一行,注意需要使用dijit.byId()来取得dijit实体,不能使用dojo.byId().在 Dojo 体系中,如果想通过 Dijit 的 id 来获得 Dijit 实体,只能通过 dijit.byId()。而作用与 document.getElementById() 相同的 dojo.byId(),无法获得任何 Dijit 实体。
2,第二行,创建自定义的dijit实体。这是获得dijit实体的第二种方法。
3,第三行,第四行,设置dijit实体的属性,包括borderContainer的region属性,还有对应的css值。
4,第五行,添加该dijit实体到已有节点下面。
5,第六行,最重要的一行代码,启动上层digit实体的startup()函数进行解析。如果启动ns.startup()则不能解析出上层的region属性。
--------------------------------------------------------------------
这种场景在我们使用dojo进行客户端应用时,为加快启动速度,延迟加载一些dojoType类型的tag。
如果是静态创建dojoType的widget,则很容易。
如果使用静态方式动态创建widget,则这种场景不能实现,因为使用dojo.parser.parse()不能进行重新分析上层节点。
只好使用这种动态创建方式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。