首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >问题:带有自定义angularjs指令和kendoConfirm的Kendo工具提示

问题:带有自定义angularjs指令和kendoConfirm的Kendo工具提示
EN

Stack Overflow用户
提问于 2019-05-30 20:16:55
回答 2查看 254关注 0票数 1

我目前的情况:剑道工具提示一个人可以很好地工作。我使用kendoConfirm的新的自定义angularjs指令可以单独工作。

但是,一旦我尝试在一个元素上同时使用它们,那么只有kendo工具提示停止工作。

代码语言:javascript
复制
   <button type="button" title="Disable Item" k-confirm-disable k-confirm-disable-title="'Confirm Disable'" k-confirm-disable-msg="'Are you sure you want to disable this item?'" ng-click="disable(dataItem.id)"  class="btn btn-danger" kendo-tooltip k-content="'Disable Item'" k-options="kendoTooltipOptions">

 $scope.kendoTooltipOptions = {
showAfter: 600,     //time for tooltip appear
position : 'top',
width    : 100
}

只有当我从元素中删除自定义角指令时,kendo工具提示才能工作。

代码语言:javascript
复制
function kConfirmDisable($compile){
return {
    restrict: 'A',
    scope: {
        kConfirmDisableTitle:   '@',
        kConfirmDisableMsg: '@'
    },
    link: function(scope, element, attrs){                      

        var clickHandlers = $._data(element[0]).events.click;

        clickHandlers.reverse(); //reverse the click event handlers list

        var onClick = function(evt) {                        
            evt.preventDefault();
            evt.stopImmediatePropagation();
            if(!scope.kConfirmDisableTitle) {
                scope.kConfirmDisableTitle = "Confirm";
            }

            if(!scope.kConfirmDisableMsg) {
                scope.kConfirmDisableMsg = "Are you sure?";
            }

            angular.element("<div></div>").kendoConfirm({
                title: scope.kConfirmDisableTitle.replace(/['"]+/g, ''),
                content: scope.kConfirmDisableMsg.replace(/['"]+/g, ''),
                buttonLayout: "normal",
                visible: false,
                actions: [
                     {
                        text: "No",
                        Primary: false,
                        action: function(){

                            evt.preventDefault();
                            evt.stopImmediatePropagation();                                
                        }
                    },
                    {
                        text: "Yes", 
                        Primary: true,
                        action: function(){                               

                            element.unbind(this);
                            setTimeout(function() {
                                element.unbind("click", onClick);
                                element.click();
                                evt.preventDefault();
                                evt.stopImmediatePropagation();
                                element.on("click", onClick);
                            },0);
                        }
                    },

                ],
                animation: {
                    open:{
                        effects: "zoom:in",
                        duration: 250
                    },
                    close:{
                        effects: "fade:out",
                        duration: 250
                    }
                },
                open: function(e) {
                   $("html, body").css("overflow", "hidden");
                },
                close: function() {
                    $("html, body").css("overflow", "visible");
                }
            }).data("kendoConfirm").open().result;
        };
        element.on("click", onClick);

        clickHandlers.reverse();
    }
}
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-31 14:36:27

我的解决方案是,我从“k-确认-禁用”指令中删除了"k-“,它就起作用了。我想是因为剑道有"k-“的保留。

票数 0
EN

Stack Overflow用户

发布于 2019-05-31 08:19:14

由于Kendo AngularJs的源代码不可用,我只能提出几点建议:

  1. 尝试研究一下,如果你不停止传播,而不是停止你指令中的点击默认的话,会发生什么。如果情况是它不能立即在页面上重新加载并在元素上悬停而不使用单击-那么这是不相关的。
  2. 避免在指令中使用孤立的作用域,并通过$attrs链接函数参数获取属性。由于您没有指定获取js错误,所以假设Kendo没有使用隔离作用域,但它仍然是一个调查方向。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56385063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档