dojo1.8-尝试注册,但。已注册-构建选择小部件

dojo1.8-尝试注册,但。已注册-构建选择小部件,dojo,Dojo,您好,我很难确定select的id在哪里注册。 可能的原因: 1) ParseOnload和Parser.parse()位于同一页上 2) 将相同的id提供给另一个新选择 3) 使用新id注册相同的select 我想不出是什么原因导致select注册了两次 ... ... <div id='main_bContainer' data-dojo-type='dijit/layout/BorderContainer' data-dojo-props='design:"sidebar"'>

您好,我很难确定select的id在哪里注册。 可能的原因: 1) ParseOnload和Parser.parse()位于同一页上 2) 将相同的id提供给另一个新选择 3) 使用新id注册相同的select

我想不出是什么原因导致select注册了两次

...
...
<div id='main_bContainer' data-dojo-type='dijit/layout/BorderContainer' data-dojo-props='design:"sidebar"'>
        <div id='paneA' class='cP_Left' data-dojo-type='dijit/layout/ContentPane' data-dojo-props='region:"left"'>  
            <div id='surfaceElement1' style='border:1px solid #ccc; margin-bottom:5px; width:317px; height:55px;'><!--these dimensions here in this line override the dimensions as set by createSurface function-->
            <div id='node_meterSelect'></div>   
            </div>

            <div id='surfaceElement2' style='border:1px solid #ccc; width:317px; height:200px;'><!--these dimensions here in this line override the dimensions as set by createSurface function-->
            <div id='node_cardSelect'></div>    
            </div>
        </div>
        <div id='paneB' class='cP_Right' data-dojo-type='dijit/layout/ContentPane'data-dojo-props='region:"center"'>
            <!--<div id='surfaceElement3' style='border:1px solid #ccc;'> <!--width:520px; height:400px;'><!--it's the size-->

            <!--</div>-->
        </div>
    </div>
...
...
...
var meter_Select = new Select
            ({store:memoStore1,
              style:{width:'140px'},
            }, "node_meterSelect");
            meter_Select.startup();

            on(meter_Select, 'change', function(evt)
            {
                    console.debug('Selected Card = '+ meter_Select.value);
                    request.post('listofcards.php',{data:{cardX : meter_Select.value},
                    handleAs:"json"}).then(function(response)
...
...
。。。
...
...
...
...
var仪表_选择=新选择
({store:memoStore1,
样式:{宽度:'140px'},
}“节点_计量选择”);
仪表_选择启动();
打开(仪表选择“更改”,功能(evt)
{
console.debug('Selected Card='+meter_Select.value);
request.post('listofcards.php',{data:{cardX:meter\u Select.value},
handleAs:“json”})。然后(函数(响应)
...
...
错误是“

错误:试图注册id==node_meterSelect的小部件,但该id已注册“
可能是什么问题?请建议..提前感谢。

以下是一个基于您的代码的工作JSFIDLE:

也许你在代码中的其他地方使用了id

require(["dijit/form/Select",
  "dojo/data/ObjectStore",
  "dojo/store/Memory","dojo/domReady!"
], function(Select, ObjectStore, Memory){

     var store1 = new Memory({
    data: [
      { id: "foo", label: "Foo" },
      { id: "bar", label: "Bar" }
    ]
  });
    var os = new ObjectStore({ objectStore: store1 });

var meter_Select = new Select
            ({store:os,
              style:{width:'140px'},
            }, "node_meterSelect");
            meter_Select.startup();
})

我找到了您的解决方案。您没有将所有必需的值映射到正确的变量!因此注册表和combobox没有正确映射!您将“combobox”映射到“on”

看看这个JSFIDLE:

缺少参数的函数头:

function (parser, ready, dom, domConstruct, gfx, declare, 
_WidgetBase, Memory, Select, ObjectStore, request, on)
更正后:

function (parser, ready, dom, domConstruct, gfx, declare, 
_WidgetBase, Memory, Select, ObjectStore, request,box,registry, on)
所以我不得不添加box和registry,现在一切都应该正常了