簡體   English   中英

為dojo小部件提供“ id”是一種好習慣嗎?

[英]Is it a good practice to give “id” for a dojo widget?

我正在為我的項目使用dojo 1.9。 我一直在遵循一種方法,在此方法中,我會為每個使用的dijit賦予“ id”。 例如:

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。

問候,文殊

這是一個非常個人的選擇。
但是,根據經驗,在由多個獨立的dojo模塊ID組成的復雜單頁應用程序上,它們非常脆弱。
在我正在工作的項目中,我完全禁止使用它們,而是依靠附加點,類屬性和小部件api。

在您的var cp = new dijit.layout.ContentPane({ ,我假設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。

結論是: 這取決於您的項目及其復雜性。

  • 是的,在簡單的項目中,為什么不使用ID。
  • 在復雜的情況下,它變得越來越脆弱,您最好不要。

順便說一句,由於Dojo 1.9使用AMD,因此您還應該避免使用“ dijit.layout.ContentPane”,而應使用變量:

require(["dijit/layout/ContentPane"], function(ContentPane){ var cp = new ContentPane(); });

我認為以獨特的方式標識小部件始終是一個好主意,原因是:

  • 您可以使用dijit/registry以簡單明了的方式檢索小部件,而無需查詢DOM。

用法示例:

require(["dijit/registry"], function(registry){
    var widget = registry.byNode(domNode);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM