Angular-Kendo窗口自定义动作

时间:2014-08-17 08:04:49

标签: kendo-ui angular-kendo kendo-window

我正在尝试使用Angular-Kendo创建一个带有自定义操作的窗口,并且遇到了问题。

使用Kendo(减去角度)时,我会添加功能like explained here

window.data("kendoWindow").wrapper.find(".k-i-custom").click(function(e){
    alert("Custom action button clicked");
    e.preventDefault();
});

但是,在Angular-Kendo中,访问窗口对象的方法是$scope.windowname,并且只能在kendo-window="windowname"指令之后使用。

我目前通过绑定k-on-open上的操作来绕过这个...

    var firstLoad = true;

    this.onOpenCallback = function () {

        if (firstLoad) {
            $scope.messageBodyWindow.wrapper.find(".k-i-custom").click(function (e) {
                alert("OMG");
            });
            firstLoad = false;
        }
然而,这个解决方案感觉就像一个廉价的黑客。是否有“正确”的方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

您可以将Angular-Kendo指令包装在自定义指令中,并将所需的功能放入link函数中。这将注册您的自定义绑定一次,而不是第一次打开窗口布尔'两轮牛车。

  <div custom-kendo-window>
  </div>

自定义指令在其模板中包含了kendo指令...

.directive('customKendoWindow', function(){
  return {
    template: '<div kendo-window="win" k-title="\'Window\'" k-width="600" k-height="200" k-visible="false"> <div id="customAction" style="cursor: pointer;">custom click action</div></div>',
    link: function(scope, element, attrs){
        $('#customAction').bind('click', function(){
          alert('Custom action fired!');
        })
    }
  }
})

这是一个code pen,显示如上所示的简单包装器,然后是一个可配置的包装器,在每个指令的链接函数中设置了click绑定。