2

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

当使用剑道(减去角度)时,我会添加如下所述的功能:

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;
        }

然而,这个解决方案感觉像是一种廉价的黑客攻击。有没有“正确”的方法来实现这一目标?

4

1 回答 1

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!');
        })
    }
  }
})

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

于 2015-09-24T20:32:37.033 回答