嵌入在kendo网格中的Angular指令不会执行

时间:2014-07-10 22:14:01

标签: angularjs kendo-ui kendo-grid kendo-asp.net-mvc angular-kendo

我在我的MVC项目中使用了kendo ui。所以,我有这个简单的指令,当它没有被kendo渲染时执行。

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

}])

该指令在此行中执行:

<h2 okok>Hello??</h2>

但是当razor生成html时,不会执行。这里

@(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 :) */
)

请注意以下行:.ClientTemplate("<div okok></div>");

不确定输出是否作为字符串处理,我必须做其他事情。感谢帮助!

1 个答案:

答案 0 :(得分:0)

我通过编译绑定内容时包装网格的元素来管理这种情况。

Kendo在其Q&amp; A页面中有一个示例,其中显示了如何将菜单嵌入到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);
  }
}

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