2015-08-21 90 views
0

我對Angular JS和Kendo UI非常新穎。我試圖從Kendo UI網格列模板打開一個彈出窗口。 網格在AngularJs指令中。Kendo Ui Grid與kendo窗口的列模板在指令中彈出

  1. 如何調用模板中的JS功能: 當我定義爲這個

<a href='javascript:changeShow()' class='link'>#=dataType#</a>

我得到未發現功能。 我的功能是在指令控制器範圍內定義的。

var changeShow = function() { 
    console.log('changeShow'); 
}; 
  • 如何從這個溫控功能打開一個彈出窗口?
  • 回答

    0

    我有點困惑你的問題,但我假設你想從你的自定義模板定義中調用一個函數。

    例如:

    "#= <a ng-click="openTheWindow()">Click to open the window</a> #" 
    

    ,模板運行在沒有角度的範圍,你的小部件是(不幸)的範圍。

    1. 如果您將要從模板調用的函數放入全局空間,模板將能夠調用它。顯然,這不能提供所需的封裝並污染全局名稱空間。 我在全局範圍內爲我想在我的模板中使用的所有自定義格式化函數實現了一個實用閉包,並在那裏引用它們。

    2. 您劍道窗口中的引用添加到您的指令的範圍,像這樣:

      <kendo-window="myWindowReference">

      由於這種引用是指令的範圍,你需要 通過使外部請求獲取範圍來自全局可訪問的效用函數的角度框架。這將大大有這樣的事情:

      var angularScope = angular.$injector.get('nameOfDirective').scope();

      然後在打開的窗口是這樣的:

      angularScope.myWindowReference.open();

      (以上語法是把我的頭頂部,但應指向您在正確的方向)。

    對不起,我不能提供一個更清潔的解決方案,但劍道角有它的怪癖,我不聲稱完全理解他們。這種方法爲我們提供了一個工作解決方案

    +0

    感謝您的回答。範圍在Angular中是一個挑戰。這可以幫助我 – user5253416

    +0

    我很高興我可以幫助。如果我用這個答案解決了您的問題,您可以將答案標記爲正確。如果真的有用,也許upvote是爲了 – hally9k