2017-04-27 95 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之後角度拋出錯誤未知提供者:nProvider

最簡單的修復方法是使用array notation進行縮小安全依賴注入。所以那段代碼變成:

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