2013-06-28 5 views
1

У меня есть следующий код для моего дерева. Все в порядке. Я могу использовать свое дерево: развернуть, свернуть, перетащить элементы. Но когда я называю «выберите» событие для любого узла я получаю сообщение об ошибке:Kendo Treeview с удаленным источником данных

Uncaught TypeError: Cannot call method 'dataItem' of undefined"

на линии

var data = $("#treeview").data("kendoTreeView").dataItem(e.node);

Любые идеи, как решить это? Как я могу получить доступ к data("kendoTreeView") моего дерева? Я попытался получить его на endRequest событии источника данных, но он не работает.

var jsonUrl = "/admin/adminmenu/adminmenujson"; 
    adminMenu = new kendo.data.HierarchicalDataSource({ 
     transport: { 
      read: { 
       url: jsonUrl, 
       dataType: "json" 
      }, 
     schema: { 
      model: { 
       id: "id", 
       children: "items" 
      } 
     } 
    }); 

    var tree = $("#treeview").kendoTreeView({ 
     name: "Admin Menu", 
     expanded: true, 
     loadOnDemand: false, 
     dragAndDrop: true, 
     dataSource: kendo.observableHierarchy(adminMenu), 
     template: "#= item.name # <input type='hidden' class='data_id' value='#=item.id#'>", 
     select: function(e) { 
      var data = $("#treeview").data("kendoTreeView").dataItem(e.node); 
      console.log(data.id); 
     } 
    }).data("kendoTreeView"); 
+0

Я не знаком с рассматриваемым элементом управления деревьями, но «$ (« # treeview »). Data (« kendoTreeView »)' is 'null' - поэтому поставьте точку останова на эту строку в вашем отладчике javascript (Firebug/Chrome Dev Tools/etc) и изучить '$ (" # treeview "). Data', чтобы увидеть, что он содержит? – Basic

ответ

1

Определить select обработчик как:

select  : function (e) { 
    var data = this.dataItem(e.node); 
    console.log(data.id); 
} 

Поскольку this в контексте select обработчика является tree.

Пример здесь http://jsfiddle.net/OnaBai/MLdeH/

Примечание: Попробуйте только удаление name: "Admin Menu", он также будет работать !!!

+0

большое спасибо! оно работает. Вы спасли мою жизнь. –

+0

вы можете помочь мне с кнопкой создать узел? –

+0

В чем проблема с кнопкой create? Что вы хотите создать? Как это связано с исходным вопросом? – OnaBai