我正在为我的项目使用dojo 1.9。我一直在遵循一种方法,我给予" id"我使用的每个dijits。例如:
var cp = new dijit.layout.ContentPane({\
id:"myContentPane",
content:"Test"
});
分配ID是一个好习惯吗? 我做的理由 例如,如果我想用新内容重新加载cp,我检查(通过id)是否已经创建了cp。如果是,我只是设置内容,如果不是,我创建它。所以上面的代码变为
if(!dijit.byId("myContentPane"){
var cp = new dijit.layout.ContentPane({\
id:"myContentPane",
content:"Test"
});
}else{
dijit.byId("myContentPane").set("content","new content");
}
所以我使用id检查dijit是否已经创建。很少,我使用id来破坏dijit。
此致 馒头
答案 0 :(得分:1)
这是一个非常个人化的选择 但是,根据经验,在由多个独立的dojo模块组成的复杂单页应用程序中,ID非常脆弱 在我正在工作的项目中,我完全禁止它们,而是依赖于附加点,类属性和小部件api。
在你的例子中,我假设var cp = new dijit.layout.ContentPane({
在一个小部件中。
所以我会这样做:
_setContentAttr: function(content) {
if(!this._contentPane) {
this._contentPane = new dijit.layout.ContentPane({content: content});
} else {
this._contentPane.set('content', content);
}
}
这样我就不会依赖ID了。
结论是:取决于您的项目及其复杂性。
require(["dijit/layout/ContentPane"], function(ContentPane){
var cp = new ContentPane();
});
答案 1 :(得分:0)
我认为通过一个独特的原因识别您的小部件总是一个好主意:
dijit/registry
以简单明了的方式检索您的小部件,而无需查询DOM。使用示例:
require(["dijit/registry"], function(registry){
var widget = registry.byNode(domNode);
});