是否可以将自定义属性添加到 Kendo 的面板栏小部件中的面板项?

Is it possible to add custom attributes to panel items in a panelbar widget for Kendo?

我正在寻找一种方法来使用 Kendo UI UI 的 PanelBar Widget 在我的数据源的项目数组中添加和引用自定义属性,例如项目的 ID =21=].

我正在用 React 构建我的组件。

示例:

componentDidMount(){
    let itemsList = this.props.navProps.map((prop,index) => {
        var open = false
        if (index == 0) open = true
        return { text: prop.name, 
                 expanded: open,  
                 items: [{text: "Sub Item 1", id: "hey"},
                         {text: "Sub Item 2", id: "ho"}]
                }
})

const menuOptions = {
        expandMode: "single",
        dataSource: itemsList
}

let onSelect = function(e) {
   console.log("Select: " + $(e.item).find("> .k-link").text());
}

let menu = new ppbar.ui.PanelBar(menudiv,menuOptions);

$(menu.element).kendoPanelBar({
    select: onSelect,
});

render(){
  return ( 
    <div id='menudiv' />
  )
}

出于某种原因,无论我尝试什么,我在 $(e.item) 中唯一能找到的是项目的文本值,而不是 id 值。

您可以使用 template 为面板栏中的每个项目添加一些带有 ID 属性的 html。

    var inlineDefault = new kendo.data.HierarchicalDataSource({
        data: [
            {
                id: 1, text: "Furniture", items: [
                  { id: 2, text: "Tables & Chairs" },
                  { id: 3, text: "Sofas" },
                  { id: 4, text: "Occasional Furniture" }
                ]
            },
            {
                id: 5, text: "Decor", items: [
                  { id: 6, text: "Bed Linen" },
                  { id: 7, text: "Curtains & Blinds" },
                  { id: 8, text: "Carpets" }
                ]
            }
        ]
    });


    $("#panelbar-left").kendoPanelBar({
        dataSource: inlineDefault,
        template: "<span class='myItemClass' data-itemid='#= item.id #'>#= item.text #</span>",
        select: function(e){
           alert("Item id = " + $(e.item).find(".myItemClass").data('itemid'));
        }
    });

DEMO

在这个例子中,我用跨度包围了文本。 class myItemClass 让我很容易 select 节点和 data-itemid 是数据中的 id。然后在 onSelect 中,您可以通过 $(e.item).find(".myItemClass").data('itemid').

检索 id