2013-08-26 23 views
0

我正在研究一些在DOM節點上使用自定義屬性的代碼。這些對於使用的特定邏輯是必需的。自定義屬性被設置在輸入元素,例如下拉列表和文本輸入字段,並格式...將自定義DOM節點屬性傳輸到Dijit窗口小部件

<input type="text" myCustomId="blah"... 

這一切工作正常標準的HTML輸入。不過,我們正在尋找使用一些Dijit小部件來代替標準輸入來實現特定外觀的感受。 在onLoad上解析DOM,並加載小部件(我們設置data-dojo-type來指定小部件)。 問題是Dojo/Dijit不保留自定義屬性。他們迷失在解析中。

是否可以指定Dijit小部件應該使用的自定義屬性?

編輯:

下面有一些樣本HTML,突出的問題。 「自定義」屬性正在消失......

<!DOCTYPE html> 
<html> 
<head> 
<link rel="stylesheet" href="http://dojotoolkit.org/reference-guide/1.9/_static/js/dijit/themes/claro/claro.css"> 
<script>dojoConfig = {parseOnLoad: true}</script> 
<script src="http://dojotoolkit.org/reference-guide/1.9/_static/js/dojo/dojo.js"> </script> 
<script>require(["dojo/parser", "dijit/form/TextBox"]);</script> 
</head> 
<body class="claro"> 
<label for="firstname">Test: </label> 
<input type="text" name="firstname" custom="test" value="testing testing" 
data-dojo-type="dijit/form/TextBox" 
data-dojo-props="trim:true, propercase:true" id="firstname" /> 
</body> 
</html> 

回答

1

我發現基於解決方案關於這篇文章...

http://dojotoolkit.org/features/1.6/html5data-attributes

本質上,如果我們在自定義屬性前添加「data-」,dojo解析器會保留小部件中的自定義屬性。它不會將該屬性放置在窗口小部件的最頂端節點上,但它足夠讓我們查看它。

+0

相關的代碼在'_WidgetBase'中使用'set'方法,只有以'data- *','aria- *'或'role *得到Dojo開始搞亂widget的主要DOM節點時複製。你可以通過繼承'dijit/form/TextBox'和設置'attributeMap'來做一個解決方法,儘管它可能會在2.0中被破壞。 – Darien

+0

多數民衆贊成澄清Darien。我特別不希望子類化任何小部件,因爲這種方法可能會成爲維護噩夢 – fatlog

0

嘗試使用data-dojo-props='urCustomID=XXX',那麼你可以通過get("urCustomID")獲得它。

+0

沒有快樂。試過... data-dojo-props =「myCustomAttribute:'abc123'」。 但它仍然迷路。 DOM中的任何位置都沒有自定義屬性的標誌。 – fatlog

0

添加的自定義屬性確實由小部件保留。但是,它們不區分大小寫。根據你在你的問題中提供的例子,嘗試通過訪問,

registry.byId('field_id').get('mycustomid') 

dijit.byId('field_id').get('mycustomid') 

我舉一個簡單的例子: -

<script type='text/javascript'> 
    dojo.require("dijit.form.TextBox"); 
    function func() { 
     alert(dijit.byId('namefld').get('customid')); 
    } 
</script> 
</head> 
<body class="claro"> 
    <input type="text" customId='mango' dojoType="dijit.form.TextBox" id="namefld" name="namefld"/> 
    <button onclick='func()'>click</button> 
</body> 
+0

嗨,今天我將介紹一下,但我一直在檢查Firebug中的小部件的HTML,並且自定義屬性根本不在小部件上。如果我只是搜索它們,沒有任何跡象。 – fatlog

+0

請參考屏幕截圖圖像,確認,自定義屬性可以在螢火蟲中查看/訪問。 - http://i.imgur.com/ImCjr1n.jpg –

+0

hhhmmm,我不確定我們是否在談論同樣的事情。你的例子並不完全是我所描述的。在設置dojoType時,輸入不會在onLoad上解析,而會由小部件替換,因爲您仍然有標準的HTML輸入。 見... http://dojotoolkit.org/reference-guide/1.9/dijit/form/TextBox.html 如果您運行的第一個樣本,檢查HTML,你會看到小部件是由一些內嵌輸入的嵌套div。 對我而言,發生的事情是這個小部件的創建失去了自定義屬性。 – fatlog

相關問題