我想搞清楚extjs中tree的一些事件的默认处理是如何实现的,
在源码中哪里定义的。
因为我要实现按下ctrl拖动树对树的节点进行复制而不是移动。
树的添加事件addEvents(),但添加的事件得有监听函数如
this.on("事件名","函数名"),但我在看源码时没看到哪有
这样的默认实现,望高人指点。还有就是添加事件函数用on,
移除事件函数用un,请问mon是什么情况????

解决方案 »

  1. 在ext库中的TreePanel.js文件中有定义啊
    tree.addEvents("myEvent");//添加自定义事件
    tree.fireEvent("myEvent", this, this.root, 'abc');//抛出事件,并传递你要的参数tree.on("myEvent", function (tree, root, s) {
         /*tree = fireEvent中的this
           root = fireEvent中的this.root
           s = "abc";
          */
    });//监听自定义事件,只有fireEvent抛出的才能监听到
    tree.un("myEvent");//取消监听,删除
      

  2. 我想请问它的click,move事件是怎么默认实现的,没看见有
    on("click",fn)这样的定义啊
      

  3. 在ext库中的TreePanel.js文件中有定义啊
    去这个文件看看,有没有click/move这样的事件就知道了
      

  4. 你没明白我的意思。我知道它添加了click事件,
    但对事件的监听一般是XXX.on("click",functionName)
    这样的形式,我是说我没看到哪儿有这样的实现!!!
      

  5. XXX.on("click",functionName)
    这个是添加监听事件,需要自己实现
    el.on(event, fn);
    el.addListeners(event, fn);{
       xtype: "button"
       listeners: {
            event: fn
       }
    }
    上面这3个形式都是一样的,只是写法不同都是,添加事件
      

  6. 我好像找到了:
    Ext.tree.TreeEventModel = function(tree){
        this.tree = tree;
        this.tree.on('render', this.initEvents, this);
    };Ext.tree.TreeEventModel.prototype = 
    {
        initEvents : function()
        {
            var t = this.tree;        if(t.trackMouseOver !== false)
            {
                t.mon(t.innerCt, 
                {
                    scope: this,
                    mouseover: this.delegateOver,
                    mouseout: this.delegateOut
                });
            }
            t.mon(t.getTreeEl(), {
                scope: this,
                click: this.delegateClick,
                dblclick: this.delegateDblClick,
                contextmenu: this.delegateContextMenu
            });
        },
    不知道我找的对不对
      

类似问题 »