Событие нажатия TreeNode на ExtJs 4 - PullRequest
3 голосов
/ 19 апреля 2011

Я использую ExtJS 4 (бета 3), и у меня есть TreePanel, которая является моим видом меню навигации. Это что-то вроде этого:

  • Работа
    • Добавить вакансию
    • Список всех работ
  • ...
    • ...
    • ...

(это будет сделано на основе системы разрешений, но это уже другая история)

В ExtJS 3 сделать что-нибудь, когда я нажал «Добавить задание», было так же просто, как добавить

...
leaf:true,
listeners:{
click:function(n){
       //my code...
   }
}
...

к корневым дочерним элементам.

Теперь это не так просто. Чем ближе я оказался (на древовидной панели)

listeners:{
    click : {
             element : 'el',
             fn : function(eve, elem, obj){
                   console.log(node);
                   console.log(elem);
                   console.log(obj);
                  }
    }
}

Так что, может быть, я просто нуб, может, у меня уже сильная ненависть к ExtJS, возможно, это просто проблема в этой бета-версии, но ...

Как добавить слушателя к событию click на узлах дерева? (событие Select не будет делать то, что мне нужно)

Спасибо, ребята.

РЕДАКТИРОВАТЬ: В настоящее время тестирование с этим, и он не работает.

 ... = Ext.create('Ext.tree.TreePanel', {
                        region      : 'west',
                        collapsible : false,
                        title       : 'ITMI',
                        width       : 220,
                        margins     : '5 5 5 5',
                        cmargins    : '5 5 5 5',
                        hideHeaders : true,
                        useArrows   : true,
                        rootVisible : false,
                        headers: [{
                                xtype    : 'treeheader',
                                text     : 'Nome',
                                flex     : 1,
                                dataIndex: 'nome'
                            }],
                        store: store,
                        listeners:{
                            itemclick: function(n){
                                console.info(n);
                            }
                        }
    ...

EDIT 2: Событие itemclick теперь работает (в финале EXJS 4), оно все еще не решает мою проблему. Я хотел бы вызвать определенную функцию, когда я вызываю каждый триод. Раньше было действительно легко. Теперь я не могу понять это.

Ответы [ 3 ]

7 голосов
/ 19 апреля 2011

в ext4 beta3 (возможно, и в финальном выпуске) ... больше нет события click ....
изменилось на itemclick подробнее

var tree = Ext.create('Ext.tree.Panel', {
    store: store,
    renderTo: Ext.getBody(),
    height: 300,
    width: 250,
    title: 'Files',

    listeners:{
        itemclick: function(n){
            console.info(n);
        }
    }

});
1 голос
/ 05 июня 2012

Я не могу заставить itemclick срабатывать с IE (нормально в Chrome). Я изменил свой код, чтобы использовать 'checkchange', и он отлично работает.

1 голос
/ 12 марта 2012

Итак, это может помочь некоторым людям, которые могут бороться с той же проблемой, что и я.

Событие "itemclick" - это способ обработки щелчков листьев, и тогда он не работал по причинам, которые я не помню.

Я выполнил то, что мне нужно, разделив конфигурацию, которую я имел в базе данных, что-то вроде

controllerName|functionName

и затем вызовите этот код в обработчике "itemclick:

this.getController(ctr)[fn]();  

, где ctr - это имя_контроллера и fn - это имя_функции . Это легко сделать с помощью eval, но я предпочитаю этого не делать.

...