2016-06-14 55 views
0

爲什麼我們需要在[]中放置注入元素'$ stateProvider','$ urlRouterProvider',我發現一些教程視頻,他們只是刪除它們並且工作正常,所以我刪除了相同的好吧,但在部署到Web服務器時遇到問題並出現以下錯誤。AngularJS在[]問題中注入元素

這裏我的問題是爲什麼我們需要把注入元素放在[]中,謝謝。

Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.5.0/ $injector/modulerr?p0=app&p1=Error%3A %…es%2Fangular%3Fv%3DZGvZMulw2S5nigpn4yQz50dopAtRo-XYhjiW0UOpfnM1%3A25%3A449 (http://errors.angularjs.org/1.5.0/ $injector/modulerr?p0=app&p1=Error%3A %%E2%80%A6es%2Fangular%3Fv%3DZGvZMulw2S5nigpn4yQz50dopAtRo-XYhjiW0UOpfnM1%3A25%3A449))

var app = angular.module("app", ['ui.router', 'ngTouch', 'ngMaterial', 'ngMessages', 'ngAnimate']) 

app.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) { 
    $urlRouterProvider.otherwise('/category'); 

    $stateProvider 
     .state('category', { 
      url: '/category', 
      templateUrl: '../../app/CategoryViewer/Category.html', 
     controller: 'CategoryController' 
    }); 
}]); 
+0

這是縮小。當你縮小你的JS時,引擎會替換變量名等。我們知道角度爲其注入命名參數,所以當縮小更改變量名時,角度無法找到要注入的模塊。給出字符串名稱int他陣列別名。它不再查看變量名稱,而是查看數組中的字符串。如果你不縮小你的JS,這兩種方法都沒有區別。 – ste2425

回答

1

縮小角度後無法找到注入的模塊。因此,要麼定義它們要麼使用ng-annotate

我只是喜歡與內聯陣列的方法去避免破的應用,方便代碼..

angular.module('myApp', []); 

MyController.$inject = ['$scope', '$route', 'Item', 'items', 'utils', 'shade']; 

angular.module('myApp') 
    .controller('MyController', MyController); 

function MyController($scope,$route,Item,items,utils,shade) { 
    // do something 
} 
0

據我所知, 使用[]語法贈款後縮小的過程,角就能找到我們的控制器,服務等注射。