我已经阅读了几个处理onClick for dijit.Tree的例子..特别是这个似乎告诉了我所需要的一切:dojo how to override dijit class method
但是,由于某种原因,我的处理程序在我的页面首次加载时被调用,而从未在我点击树节点时被调用?
以下是代码:
<div dojoType="dijit.layout.ContentPane" title="Published Blueprints" minSize="20" style="width: 300px;" id="leftAccordion" region="leading" splitter="true">
<div id="blueprintTree" dojoType="dijit.Tree" store="" query="" label="Blueprints" openOnClick="false">
</div>
</div>
......然后我就这样做了......
dojo.ready(function() {
var tree = dijit.byId("blueprintTree");
tree.connect(tree, "onClick", function(item) {
// my code here...
});
});
...当我启动(在调试中)我的jsp时,“我的代码在这里”部分会被调用,但是当我在节点上锁定时,它永远不会被调用...
显然我错过了一些简单的东西?
此致 布赖恩
答案 0 :(得分:-1)
是否需要将连接放在dojo.ready()中?也许这就是它在启动时调用的原因?
看着dijit.Tree来源,我看到onClick有两个args 这就是我在成功捕获onClicks时所使用的:
在Tree构造函数中添加openOnClick:false:
var tree = new dijit.Tree( {
model: myModel,
openOnClick: false,
etc...
然后在我使用programmatic approach
创建树的同一个函数中dojo.connect( tree,"onClick", function(/*dojo.data*/ item, /*TreeNode*/ nodeWidget){
//my code
});