处理上下文菜单的选择事件

时间:2016-05-24 23:35:10

标签: jquery kendo-ui aurelia

我正在使用Aurelia和Kendo UI。我尝试了上下文菜单。我在从select调用函数时遇到问题。它无法找到该方法。有什么想法吗?

$("#menu").kendoContextMenu({                
    orientation: orientation,                
    target: "#listview-context-menu",                
    filter: ".product",                
    animation: {                    
        open: { effects: "fadeIn" },                    
        duration: 500
    },                
    select: function (e) {
        this.doAction(); // this function is not being recognized. 
    }
});

1 个答案:

答案 0 :(得分:0)

select事件中调用时,this关键字将引用kendoContextMenu对象。 kendo小部件没有doAction函数,并且您提供的代码不会扩展kendo类以包含此类函数。

如果您保留对原始this上下文的引用(假设doAction是在此级别定义的),则您需要在初始化kendoContextMenu之前复制:

var originalThis = this;
$("#menu").kendoContextMenu({                
    orientation: orientation,                
    target: "#listview-context-menu",                
    filter: ".product",                
    animation: {                    
        open: { effects: "fadeIn" },                    
        duration: 500
    },                
    select: function (e) {
        originalThis.doAction();
    }
});

但是,如果你想扩展kendoContextMenu的特定实例,你可以这样做:

$("#menu").kendoContextMenu({                 
    //...
});
$("#menu").data("kendoContextMenu").doAction = function() {
    alert("Action done");
}

请注意,如果doAction为每个kendoContextMenu对象生成,您还可以扩展kendo原型。