如何在Kendo UI的可过滤itemTemplate中访问方法?

时间:2018-05-14 17:54:24

标签: javascript kendo-ui kendo-grid

我有一个Kendo网格,其中一个列是可过滤的。但是为了确保可过滤弹出窗口中值的正确定位,我需要在itemTemplate中调用一个方法,该方法将返回数据的本地化值。

我尝试在示例DOJO中实现此功能,但它确实有效。但是,这对我的实际代码不起作用。我的代码看起来有点像这样。剑道网格是在木偶视图内创建的。我无法真正找到dojo和我的代码之间的区别。在我的情况下,它给出了一个错误,即没有定义方法。 任何领导都将不胜感激。

define(function(require) {

    var MarionetteView = Marionette.View.extend({
        init: function(){
        //init Variables
    },

    createGrid: function(){
        var kendoGrid = $("#grid").kendoGrid({
          columns: [ {
                field: "country",
              filterable: {
                    multi:true,
                  itemTemplate: function(e) {
                    //Test Method is not accessible here
                    return "<span><label><span>#= test(data.country|| data.all) #</span><input type='checkbox' name='" +                                                    e.field + "' value='#= data.country#'/></label></span>"
                    e.field + "' value='#= data.country#'/></label></span>"
                    }
                }
            }],
            filterable: true,
            dataSource: [ { country: "BG" }, { country: "USA" } ]
        });
        function test( text ){
            return text + 1;
        }

    }
    )};
    return MarionetteView;
}

1 个答案:

答案 0 :(得分:0)

它在DOJO中起作用的原因是因为该功能是在 Window 的范围内创建的。由于Grid也是在Window范围内创建的,因此您可以在项目模板中访问 test()

在您的情况下,您的范围将更改为Marionette视图。所以,如果您现在想要使用测试,则必须执行以下操作:

window.test = function(text){ //Your logic } 

这应该有效。