2017-04-27 1 views
0

내가 오류받을 작게를 작게하다 꿀꺽 후 ​​작동하지 : Uncaught Error: [$injector:unpr] http://errors.angularjs.org/1.5.8/$injector/unpr?p0=nProvider%20%3C-%20n각 인젝터() 쭉 마시는 후

무엇이 오류가 발생할 수 있습니다? jScroll을 자동 페이지 매김에 사용하고 다른 페이지를 추가 할 때 페이지에 추가 된 항목을 컴파일해야합니다. gulp을 실행하면 올바르게 작동하지만 gulp --production 이후에는 작동하지 않습니다.

paginationCtrl.js

(function() { 

'use strict'; 

app.controller('paginationCtrl', [ 
'$scope', '$alert', '$http', '$timeout', '$compile', 
function ($scope, $alert, $http, $timeout, $compile) { 

    $scope.compileElements = function() { 
     $('.jscroll-inner').each(function() { 
      var content = $(this); 
      angular.element(document).injector().invoke(function($compile) { 
       var scope = angular.element(content).scope(); 
       $compile(content)(scope); 
       $scope.$apply(); 
      }); 
     }); 
    } 

    $(document).ready(function(){ 
     $('.scroll-element').jscroll({ 
      loadingHtml: "", 
      autoTrigger: true, 
      nextSelector: '.scroll-pagination', 
      contentSelector: '.scroll-element', 
      callback: function() { 
       $('ul.pagination:visible:first').hide(); 
       $scope.$digest(); 
       angular.element(document).ready(function() { 
        $scope.compileElements(); 
       }); 
      } 
     }); 
    }); 
}]); 
})(); 

gulpfile.js

var gulp = require('gulp'); 
var notify = require("gulp-notify"); 
var mainBowerFiles = require('main-bower-files'); 

var elixir = require('laravel-elixir'); 
require('laravel-elixir-livereload'); 
require('laravel-elixir-vueify'); 

gulp.task('bower', function() { 
    return gulp.src(mainBowerFiles()) 
     .pipe(gulp.dest('resources/assets/js/vendor')) 
     .pipe(notify("Success: Bower Installments!")); 
}); 

elixir(function(mix) { 
    mix.sass(['main.scss'], 'public/assets/css/main.css') 
     .scripts([ 
      'resources/assets/js/vendor/jquery.min.js', 
      'resources/assets/js/vendor/angular.min.js', 
      'resources/assets/js/vendor/moment.min.js', 
      'resources/assets/js/vendor/jquery.pjax.js', 
      'resources/assets/js/vendor/jquery.timepicker.min.js', 
      'resources/assets/js/vendor/**/*.js', 
      ], 'public/assets/js/vendor.js') 
     .scriptsIn('resources/assets/js/app', 'public/assets/js/app.js') 
     .version([ 
      'assets/css/main.css', 
      'assets/js/vendor.js', 
      'assets/js/app.js', 
     ]) 
     .livereload([ 'app/**/*', 'public/build/**/*', 'resources/views/**/*' ]); 
}); 

답변

2

당신은이 코드 조각이 :

angular.element(document).injector().invoke(function($compile) { 
    var scope = angular.element(content).scope(); 
    $compile(content)(scope); 
    $scope.$apply(); 
}); 

축소를하기 전에에 각 요구하고 주입하다 $compile. 미세화 후에 Angular가 n을 주사 한 다음 Angular가 오류를 throw합니다. Unknown provider : nProvider.

가장 쉬운 수정은 분화 안전 의존성 주입을 위해 array notation을 사용하고 있습니다. 그 코드 조각은 다음과 같습니다.