2015-08-21 72 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