2016-11-10 18 views
0

Я использую Minifier аддон к визуальной студии, которая в основном работает для этого одного блока AngularJS кода, за исключениемAngularJS терпит неудачу, когда уменьшенная

Это unminified код:

var svgBuildInterface = angular.module("svgBuildInterface", []); 

svgBuildInterface.directive('ngRightClick', function ($parse) { 
    return function (scope, element, attrs) { 
     var fn = $parse(attrs.ngRightClick); 
     element.bind('contextmenu', function (event) { 
      scope.$apply(function() { 
       event.preventDefault(); 
       fn(scope, { $event: event }); 
      }); 
     }); 
    }; 
}); 

Это довольно -printed уменьшенного кода, который не удается:

svgBuildInterface = angular.module("svgBuildInterface", []); 
svgBuildInterface.directive("ngRightClick", function(n) { 
    return function(t, i, r) { 
     var u = n(r.ngRightClick); 
     i.bind("contextmenu", function(n) { 
      t.$apply(function() { 
       n.preventDefault(); 
       u(t, { 
        $event: n 
       }) 
      }) 
     }) 
    } 
}); 

Я не могу поставить точку останова в уменьшенный код, чтобы выяснить, что происходит, но angularJS бросает исключение:

Error: [$injector:unpr] http://errors.angularjs.org/1.5.7/ 
$injector/unpr?p0=nProvider%20%3C-%20n%20%3C-%20ngRightClickDirective 
+0

Возможный дубликат [Минимизировать angularjs результатов сценария по ошибке] (http://stackoverflow.com/questions/35684870/minify-angularjs-script- результаты в ошибке) – Michelangelo

+1

Возможная дубликация [Угловая минификация с помощью контроллера-регулятора?] (http://stackoverflow.com/questions/27727017/angular-minification-with-directive-controller) –

+1

Ваша директива не является безопасностью minification: https : //docs.angularjs.org/guide/di#implicit-annotation –

ответ

4

Измените директиву, как показано ниже, есть определенные рекомендации, которые следует соблюдать при написании контроллера или директивы или любой другой компонент угловой JS, когда вы хотите, чтобы Минимизировать ваш JS.

Один из них проходит через инъекции зависимостей []

var svgBuildInterface = angular.module("svgBuildInterface", []); 

svgBuildInterface.directive('ngRightClick',['$parse', function ($parse) { 
    return function (scope, element, attrs) { 
     var fn = $parse(attrs.ngRightClick); 
     element.bind('contextmenu', function (event) { 
      scope.$apply(function() { 
       event.preventDefault(); 
       fn(scope, { $event: event }); 
      }); 
     }); 
    }; 
}]); 
+1

Я только что понял то же самое, и это сработало. Раньше я не заметил, что $ parse был чем-то, на что нужно было ссылаться с угловатой и не уменьшенной. – GeeWhizBang

Смежные вопросы