0

I'm using kendo ui in my MVC project. So, I have this simple directive that executes when it's not rendered by kendo.

.directive('okok', ['$log', function($log){
    return {
        link: function (scope, elm) {
            $log.log('directive okok!!');
        }
    };

}])

The directive executes in this line:

<h2 okok>Hello??</h2>

But it does not execute when razor generates the html. Here

@(Html.Kendo().Grid(Model.CoolModel)
          .Name("CoolGrid")
          .Columns(cols => {
              cols.Bound(c => c.StatusDescription).Title("This is my test")
                  .ClientTemplate("<div okok></div>");
          })
    /* Mode code :) */
)

Please note the line: .ClientTemplate("<div okok></div>");

Not sure if the output is handle as a string an I have to do something else. Help is appreciated!

4

1 回答 1

0

我通过在绑定内容时编译包装网格的元素来管理这个场景。

Kendo 在其问答页面中有一个示例,其中展示了如何将菜单嵌入到 grid.cell 中,并且必须在呈现内容后执行启用子菜单的脚本。有点蹩脚。

所以,我的控制器中有一个函数可以编译范围内的元素。

$scope.rebindElm = function(elm){
   $compile(elm)($scope);
}

在视图中,当 kendo.grid.OnContentBound (或类似的东西)时执行脚本

function bindContent(e){
  var elm = angular.element('gridName');
  var scope = elm.scope();
  if (scope != null) {
    scope.rebindElm(elm);
  }
}

是的,这感觉像是一种 hack,但这是我发现在使用 kendo.mvc 生成指令时执行指令的唯一方法

于 2014-07-13T15:39:24.100 回答