我正在尝试使用Dojo来获得简单SpinWheel的价值。下面的代码不打印任何内容。如果我将“ w.get(” value“)”更改为“ w.value”,那么我会得到“ Value is undefined”的信息。我怀疑问题是我不应该使用document.getElementById来获取我的SpinWheelSlot。这是这样做的不正确方法吗?

码:

<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no"/>
<meta name="apple-mobile-web-app-capable" content="yes"/>
<title>Dojo SpinWheel</title>
<!-- load Dojo -->
<script src="/dojox/mobile/deviceTheme.js"></script>
<script src="/dojo/dojo.js" data-dojo-config="async: true, parseOnLoad: true"></script>
<script type="text/javascript">
require([
    "dojox/mobile/parser",
    "dojox/mobile/SpinWheel",
    "dojox/mobile/View",
    "dojox/mobile/Heading",
    "dojox/mobile/SpinWheelSlot",
    "dijit/registry",
    "dojox/mobile/compat",
    "dojox/mobile"
],
function(registry) {
    showSelectedValue = function(){
            var w = document.getElementById("slot1");
            document.getElementById("msg").innerHTML =
                "Value is " + w.get("value")
            }
});
</script>
</head>
<body>
<div data-dojo-type="dojox.mobile.Heading">
    <span data-dojo-type="dojox.mobile.ToolBarButton" onClick="showSelectedValue()"     data-dojo-props='label:"OK"'></span>
</div>
    <h1 data-dojo-type="dojox/mobile/Heading">Custom SpinWheel</h1>
    <div id="spin1" data-dojo-type="dojox/mobile/SpinWheel" style="width:80px;">
        <div id="slot1" data-dojo-type="dojox/mobile/SpinWheelSlot"
            labels="A,B,C,D,E"
            style="text-align:center;width:80px;"></div>
    </div>
<p id="msg"></p>
</body>
</html>

最佳答案

document.getElementById用于查找dom元素。
https://developer.mozilla.org/en-US/docs/Web/API/document.getElementById

上面与dojo中的dom.byId()相同
http://dojotoolkit.org/reference-guide/1.9/dojo/dom.html#dojo-dom-byid


  这是document.getElementById的简单别名,不仅是
  编写时间较短,但幸运的是在所有浏览器中均可使用。变成了
  domNode对某些Node byId的引用,如果相同,则引用相同的节点
  通过了domNode。


要访问dojo小部件,请使用Registry.byId()
http://dojotoolkit.org/reference-guide/1.9/dijit/registry.html


  dijit / registry将所有dijit小部件的集合存储在
  页。通常用于从中检索对小部件的引用
  相关数据(例如小部件的DOM节点或ID)。它
  包含以前在根dijit对象上找到的用于查找的函数
  小部件,例如dijit.byId和dijit.byNode。
  
  Registry.byId返回与给定ID对应的窗口小部件。如果
  不存在这样的小部件,它返回未定义。

08-06 15:13