0

我在我的MVC項目中使用kendo ui。所以,我有這個簡單的指令,當它不是由kendo呈現時執行。在劍道網格中嵌入的Angular指令不執行

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

}]) 

該指令執行這一行:

<h2 okok>Hello??</h2> 

當剃刀生成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>");

不知道,如果輸出處理爲字符串的我只好去其他地方做一些事情。幫助表示讚賞!

回答

0

我通過編譯內容綁定時包裝網格的元素來管理此場景。

Kendo在其Q &的一個例子中顯示瞭如何將一個菜單嵌入到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生成時執行的指令