Dojo - “尝试使用id == centerPane注册小部件,但该ID已经注册”

时间:2013-02-02 16:34:12

标签: javascript html css dojo

我在Dojo中的内容窗格遇到问题,然后内容会出现一秒钟内容然后消失。我收到以下错误:

 Uncaught ReferenceError: dijit is not defined index.php:22
    dojo/parser::parse() error 
    Error
    arguments: undefined
    get stack: function () { [native code] }
    message: "Tried to register widget with id==centerPane but that id is already registered"
    set stack: function () { [native code] }
    type: undefined
    __proto__: d

我已经回答你可以销毁所有已注册ID的答案,但我在尝试时仍然收到错误。

var ids = ["contentPane"];
dijit.registry.forEach(function(w){ 
   if(dojo.indexOf(ids,id)){
        w.destroyRecursive();
   }
});

var ids = ["contentPane"];

dijit.registry.forEach(function(w){ 
   if(dojo.indexOf(ids,1)){ // 1 will be yourid it will get destroy
        w.destroyRecursive();
   }
});

如何解决此错误?

2 个答案:

答案 0 :(得分:1)

解决了它,是一件简单的事情,但我会坚持回答以防万一其他人犯了我的错误。 我的原始代码:

    <script>
      require(["dojo/parser", "dijit/layout/BorderContainer", "dijit/layout/ContentPane"],
        function (parser) {
        parser.parse();
      });
</script>

固定代码:

<script>
  require(["dojo/parser", "dijit/layout/BorderContainer", "dijit/layout/ContentPane"]);
</script>

答案 1 :(得分:1)

当parseOnLoad设置为true时,我遇到了这个问题。根据我的理解,它可以启用Widget注册。一旦我禁用错误就消失了。

<script type="text/javascript">
    var dojoConfig = {          
        parseOnLoad:false,

.....