使用KendoGrid模板中的函数

时间:2015-01-30 15:17:43

标签: angularjs kendo-ui

In this plunk我有一个AngularJS KendoGrid,有两列:代码和名称。代码是一个数字,名称是代码的函数:getName(code)。我将该功能放在模板中,但是我得到了function undefined。有什么想法吗?

HTML

   <div kendo-grid="grid" 
        k-data-source="ds" 
        k-options="gridOptions"></div>

的Javascript

var app = angular.module("app", [ "kendo.directives" ]);

function MyCtrl($scope) {


    $scope.gridOptions = {
            columns: [
              {
                        field: "code"
                },
                {
                    field: "name",
                    template: '#= getName(code) #'
             }]
  };


    var getName = function(code) {
      return "This code is " + code;
    };


    $scope.ds = [{ code: 1  },
              { code: 2 },
              { code: 3 },
              { code: 4 },
              { code: 5 }];

}

2 个答案:

答案 0 :(得分:3)

您可以使用{{ }}等角度模板表达式以及#= #等剑道表达式。对于您的示例,请尝试:

$scope.gridOptions = {
   columns: [
      { field: "code" },
      {
        field: "name",
        template: '{{ getName(dataItem.code) }}'
      }
   ]
};
$scope.getName = function(code) {
  return "This code is " + code;
};

请参阅此演示:http://dojo.telerik.com/@pesho/iMASa/2

答案 1 :(得分:1)

对于kendo模板,#= something#语法用于将值呈现为HTML,因此您无法调用类似的函数。

忽略=符号并使用     #thing# 执行任意javascript

请参阅:http://docs.telerik.com/kendo-ui/framework/templates/overview