我正在尝试使用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;
}
然而,这个解决方案感觉就像一个廉价的黑客。是否有“正确”的方法来实现这一目标?
答案 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绑定。