Kendo 中的方法触发器

Method Trigger in Kendo

我在以下 jsfiddle 中有虚拟数据:http://jsfiddle.net/epvg86qu/18/ 当用户点击该行时,它会调用 DetailChart_Click() 方法绘制其他数据系列 (stats,stats2),反之亦然。

然而,当我尝试在我的实际项目中实现此功能 (seriesClick) 时,它 initialize.However 时只调用一次 DetailChart_Click() 方法,它不会 call/trigger 当用户点击线系列时的那个方法。

var isHover=false;  

self.updateChart = function () {
            var chart = $("#chart").data("kendoChart");
            chart.options.series = self.dataSeries1;                          
            chart.options.seriesClick = DetailChart_Click();        
            chart.refresh();
 }

function DetailChart_Click() {
        console.log("hello");
        if (!isHover) {
            var chart = $("#chart").data("kendoChart");
            chart.options.series = self.dataSeries2;
            chart.redraw();
            isHover = true;
        }
        else if (isHover) {
            var chart = $("#chart").data("kendoChart");
            chart.options.series = self.dataSeries1;
            chart.redraw();
            isHover = false;
        }
}

您可以使用下面的代码片段在初始化后绑定您的 DetailChart_Click()

var chart = $("#chart").data("kendoChart");
chart.bind("seriesClick", DetailChart_Click);

摘自 here.

或者,在初始化期间绑定它,如 demo 中所示。

补充说明

您目前正在做的事情如下:

chart.options.seriesClick = DetailChart_Click();

调用DetailChart_Click函数并分配return值(即undefined 因为它没有 return 值)到 seriesClick,这不是您想要的。一般来说,如果你想注册 callbacks,比如这个,你会想省略那些括号(使其成为函数 DetailChart_Click 的引用)并将其分配给seriesClick,这是你打算做的。

但是,即使您删除了上面代码中的括号,您还是错误地分配了它,因为 seriesClick 回调应该由 chartbind 方法注册,而不是将其分配给 chart.

options 属性

希望对您有所帮助!