如何在zend框架中为dojo动态树创建dojo数据onclick事件以实现程序化方法

Posted

技术标签:

【中文标题】如何在zend框架中为dojo动态树创建dojo数据onclick事件以实现程序化方法【英文标题】:how to create dojo data onclick event for dojo dynamic tree in zend framework for programatic approach 【发布时间】:2012-08-02 12:03:41 【问题描述】:

我是 Zend 框架的新手,dojo.i 在 zend 框架中使用 dojo 创建了动态树结构,但我想通过单击每个文件夹和树结构的元素来通过编写函数来导航到另一种形式。请检查我的代码和帮助我在点击事件链接上经历了一些道场,但无法解决..

    <html>
    <head>
    <title> Tree Structure </title>
    <link rel="stylesheet"    href=/dojo/dijit/themes/ claro/claro.css" /> 
    <script type="text/javascript" src="/ dojo/dojo/dojo.js" 
         djConfig="parseOnLoad:true, isDebug:true"  >
       </script> 

   <script type="text/javascript">
   dojo.require("dojo.parser");
   dojo.require("dijit.layout.ContentPane");
   dojo.require("dijit.layout.BorderContainer");
   dojo.require("dijit.layout.TabContainer")
   dojo.require("dijit.form.Button");
   dojo.require("dojo.data.ItemFileReadStore"); 
   dojo.require("dijit.tree.ForestStoreModel");
   dojo.require("dijit.Tree"); 
   dojo.require("dojo.parser"); 
  function myTree( domLocation )  
  var store = new dojo.data.ItemFileReadStore(url:    "http://localhost/CMTaSS_module1.0/public/dojo/cbtree/datastore/Family-1.7.json"); 

 var treeModel = new dijit.tree.TreeStoreModel(
         store: store,
         query:  name:'John'
        );

  var tree =  new dijit.Tree(  
             model: treeModel, 
            id: "mytree",
           openOnClick: true
                   ); 
                    tree.placeAt( domLocation );
                 
var tree_obj = new dijit.Tree(
    model: treeModel

 ,
  "tree_obj");

 dojo.connect(tree_obj, 'onClick', function(item, node, evt)
     console.log("Item", item);
     console.log("Node", node);
     console.log("Event", evt);
     //console.log('node: ' +tree_obj.getLabel(node));
     //console.log('event: ' +tree_obj.getLabel(evt));
     console.log('identifier: ' + tree_obj.getLabel(item))
  );

</script>

</head>
 <body class="claro"><br><br><br>
 <div id="CheckboxTree"> 
  <script type="text/javascript"> 
     myTree("CheckboxTree"); 
   </script> 
 </div> 
</body>
</html> 

【问题讨论】:

【参考方案1】:

看起来您的代码示例格式不正确,因为某些逻辑位于 myTree 函数之外。我使用 jsbeautifier.org 来确认这一点。

其他注意事项... 您应该等到道场准备就绪。使用dojo.addonload 或create a widget 并在代码的html 部分中引用该小部件。小部件令人惊叹,是使 dojo 变得伟大的原因,因此掌握它们的工作方式将带来好处。

还请注意,如果以编程方式创建小部件(新 dijit.Tree),则应在其上调用启动。以声明方式创建它时不需要这样做(内联 html)。

我希望这会有所帮助。

【讨论】:

以上是关于如何在zend框架中为dojo动态树创建dojo数据onclick事件以实现程序化方法的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Struts2 框架向 Dojo 树提供 JSON 数据

Zend 框架中的 Dojo 对话框错误

Zend 框架与 dojo

Zend 2 + Dojo 文档…

如何使用 DOJO 元素以 zend 形式分别呈现标签和元素

Zend_Dojo_Form_Element 创建简单元素(“充当” Zend_Form_Element)