为什么我的指令失败而没有错误?

时间:2016-08-10 14:31:42

标签: angularjs angularjs-directive

该指令:

angular.module('WizmoApp', [])
    .directive('confirmClick', function() {
        return {

                priority: -1,
                restrict: 'A',
                link: function(scope, element, attrs){
                    element.bind('click', function(e){
                        var message = attrs.ngConfirmClick;
                        // confirm() requires jQuery
                        if(message && !confirm(message)){
                            //e.stopImmediatePropagation();
                            //e.preventDefault();
                        }
                    });
                }
        };
    });

,我试图从这里转录: Confirmation dialog on ng-click - AngularJS 足以让我的应用程序戛然而止。 没有在屏幕上显示,没有js错误,没有任何东西,只是一个空白的sacreen。

这就是我使用它的方式:

<tr class="" 
    ng-repeat="package in adminManifestVm.Manifest | orderBy:'Id' track by $index"  
    ng-click="adminManifestVm.debinPackage(package.Id);" 
    ng-confirm-click="Are you sure you want to debin this?">

不知道如何调试指令,更不用说写一个。

[编辑] 我只是注意到,在该示例中,该指令实际上被称为 ngConfirmClick 。改变它,但没有任何区别。

2 个答案:

答案 0 :(得分:1)

你使用它错了

<tr class="" 
ng-repeat="package in adminManifestVm.Manifest | orderBy:'Id' track by $index"  
ng-click="adminManifestVm.debinPackage(package.Id);" 
confirm-click val="Are you sure you want to debin this?">

并在您的指令中添加范围

angular.module('WizmoApp', [])
.directive('confirmClick', function() {
    return {
            scope:{
              val: '='
             },
            priority: -1,
            restrict: 'A',
            link: function(scope, element, attrs){
                element.bind('click', function(e){
                    var message = val;
                    // confirm() requires jQuery
                    if(message && !confirm(message)){
                        //e.stopImmediatePropagation();
                        //e.preventDefault();
                    }
                });
            }
    };
});

答案 1 :(得分:0)

该解决方案无效。这个错误毫无意义:

  

语法错误:令牌'包'是第6列的意外令牌   表达[将包裹移回桩?]从[包装回来开始]   桩?]。

这就是我实现它的方式:

指令:

(function(){
angular
    .module('WizmoApp')
    .directive('confirmClick', function () {
        return {
            priority: -1,
            restrict: 'A',
            link: function(scope, element, attrs){
                element.bind('click', function(e){
                    var message = attrs.val;
                    // confirm() requires jQuery
                    if(message && !confirm(message)){
                        e.stopImmediatePropagation();
                        e.preventDefault();
                    }
                });
            }
        }
});
})();

查看:

<tr class="" 
    ng-repeat="package in adminManifestVm.Manifest | orderBy:'Id' track by $index"  
    ng-click="adminManifestVm.debinPackage(package.Id);" 
    confirm-click 
    val="Move Package back to Pile?">