1

我的树视图有以下代码。一切都好。我可以使用我的树:展开、折叠、拖动项目。但是当我为任何节点调用“选择”事件时,我得到一个错误:

未捕获的类型错误:无法调用未定义的方法“dataItem”

在线上

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");
4

1 回答 1

1

将处理程序定义select为:

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

由于thisselect处理程序的上下文中是tree.

这里的例子http://jsfiddle.net/OnaBai/MLdeH/

注意:尝试删除name: "Admin Menu",它也可以!

于 2013-06-28T22:39:28.880 回答