将自定义DOM节点属性传输到Dijit小部件

时间:2013-08-26 15:40:30

标签: javascript dojo

我正在研究一些在DOM节点上使用自定义属性的代码。这些对于使用的特定逻辑是必需的。自定义属性在输入元素(如下拉列表和文本输入字段)上设置,格式为......

<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>

3 个答案:

答案 0 :(得分:1)

我找到了基于这篇文章的解决方案......

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

基本上,如果我在自定义属性前添加“data-”,则dojo解析器会在窗口小部件中保留自定义属性。它不会将属性放在窗口小部件的最顶层节点上,但它足以让我们查找它

答案 1 :(得分:0)

尝试使用data-dojo-props='urCustomID=XXX',然后您可以get("urCustomID")获取它。

答案 2 :(得分: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>