ВЫПУСК: Подсказка Kendo с пользовательской директивой angularjs и kendoConfirm - PullRequest
1 голос
/ 30 мая 2019

Моя текущая ситуация: подсказка кендо работает в одиночку.Моя новая пользовательская директива angularjs с kendoConfirm прекрасно работает в одиночку.

, но как только я пытаюсь использовать их вместе для элемента, перестает работать только подсказка кендо.

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

только подсказка кендоработает, когда я удаляю пользовательскую угловую директиву из элемента.

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

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

Мое решение - я удалил «k-» из директивы «k-verify-disable», и это сработало.я думаю, потому что в кендо зарезервировано "k-".

0 голосов
/ 31 мая 2019

Поскольку исходный код Kendo AngularJs недоступен, я могу предложить только несколько вещей:

  1. Попытайтесь выяснить, что происходит, если вы не остановите распространение и не остановите настройку по умолчанию при щелчке в вашей директиве. Если сценарий таков, что он не работает сразу после перезагрузки страницы и зависания элемента без использования щелчков, то это не имеет значения.

  2. Избегайте использования изолированного контекста в вашей директиве и получите атрибуты через параметр функции $ attrs link. Поскольку вы не указали, что получаете ошибку js, я предполагаю, что Кендо не использует изолированную область, но это все еще направление для исследования.

...