我用dojo的API来动态生成widget组件,但在往TabContainer中添加Panel的时候遇到了问题:dojo里头的TabContainer没有对应的API来往Container中插LinkPane,ContentPane等!!我尝试用DOM 的appendChild()来动态的往TabContainer加dojo的LinkPane转化后的Dom元素,但是不行,添加的时候报:Could not convert JavaScript argument,似乎根本无法识别dojo的LinkPane对象对应的Dom节点是怎么回事呢?dojo这么强大的框架怎么会连这种API都没有呢,哪位高人能否指点一二?

解决方案 »

  1.   

    可以啊,怎么不可以?<html>
    <head>
    <script>
        var djConfig = {isDebug:false};
    </script>
    <script src="dojo-0.4.1-minimal/dojo.js"></script>
    <script>
        dojo.require("dojo.event.*");
        dojo.require("dojo.lang.*");
        dojo.require("dojo.widget.*");
    dojo.hostenv.writeIncludes();
    </script>
    <script>
        function create(){
            var tabContainer = dojo.widget.createWidget("TabContainer",{id:"tabCon"});
            var contentPane = dojo.widget.createWidget("ContentPane",{id:"content",label:"ContentPane 1"});
            var linkPane = dojo.widget.createWidget("LinkPane",{id:"link",label:"LinkPane 1"});
            tabContainer.addChild(contentPane);
            tabContainer.addChild(linkPane);
            document.body.appendChild(tabContainer.domNode);
        }
        window.onload=create;
    </script>
    </head>
    <body></body>
    </html>
      

  2.   

    shenglijay(探索者) 
    好像不行
      

  3.   

    还有一个问题:LinkPane有没有添加TabName的API,也找不到,你的API是在哪里找到的?dojo官方网站上的api都没有这些啊~~
      

  4.   

    to:shenglijay(探索者)
    tabContainer.addChild的API在报错:tab.domNode has no properties我怀疑dojo这东西还是有bug的~~
      

  5.   

    我自己下了一个版本 dojo-0.4.1-minimal
    这些api都是从它 tests/widget 下很多例子学来的,而且我们公司也一直都在用dojo来做项目啊,个人觉得dojo这东西还是很成熟的,我给你门的那个例子,在我这边可以正常的run起来啊
    -_-
      

  6.   

    to:shenglijay(探索者)
    我在tabContainer中加的LinkPane是这样生成的:contentWigdet = dojo.widget.createWidget("LinkPane",{id:this.tabId,href:this.tabContent,label:this.tabName});
    var tabNameTextNode = document.createTextNode(this.tabName);
    contentWigdet.domNode.appendChild(tabNameTextNode);  即在dojo的wigdet的对应dom节点下增加了TextNode节点,这会造成tab.domNode has no properties的错误么?没道理啊~~
      

  7.   

    问题找到了:dojo的widget实例如果做为函数返回值的形势获得的话,tabContainer.addChild()该返回的widget实例是不认的,我的LinkPane,ContentPane的生成是封装在一个tabItem.js类中的,而tabContainer是封装在tabCreater.js类中的,所以会存在这种问题,我把tabItem.js中生成LinkPane,ContentPane代码摞到tabCreater.js中就没有问题了这算不算dojo的bug呢,有时间的话得到dojo官方网站的FAQ上去问问谢谢shenglijay(探索者)的帮助,csdn上用ajax的不多啊,这点比javaEye有一定的差距,呵呵~~
      

  8.   

    这算不算dojo的bug呢
    ---------------------
    不太清楚,呵呵。
    不过你解决了问题就是好事。