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

时间:2013-03-19 04:13:04

标签: dojo

您好我无法确定select的ID在再次尝试时注册的位置。 可能的原因:- 1)ParseOnload和Parser.parse()在同一页面上 2)给另一个新选择提供相同的id 3)使用新id注册相同的选择

我无法确定选择注册两次的原因。

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

错误是“

错误:尝试使用id == node_meterSelect注册窗口小部件,但该ID已经注册“ 可能是什么问题呢?请指教..提前致谢。

2 个答案:

答案 0 :(得分:0)

这是一个基于你的代码的工作jsfiddle:

http://jsfiddle.net/JxpRC/2/

也许你在代码中的其他地方使用了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();
})

答案 1 :(得分:0)

我找到了你的解决方案。您没有将所有需求值映射到正确的变量!所以注册表和组合框没有正确映射!你在“on”上映射“combobox”。

看看这个jsfiddle:

http://jsfiddle.net/ejEGr/7/

缺少参数的函数头:

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)

所以我不得不添加盒子和盒子注册表,现在一切都应该正常。