2016-04-26 97 views
0

我正在一個大的angularJS應用程序,它是在ASP.NET MVC, 當我使用腳本標籤一個接一個地包含腳本時,所有工作都沒有任何問題,但只要我啓用捆綁和縮小通過web.optimization一些控制器不解決和應用程序剎車。AngularJS應用程序MVC4捆綁剎車應用程序

  var scriptBundle = new ScriptBundle("~/bundle/app") 
      .Include("~/App/app.js") 
      .IncludeDirectory("~/App", "*.js", true); 

這是我如何註冊包。在做這第一件事後我看到在加載應用程序後在控制檯中是

Error: [$injector:nomod] http://errors.angularjs.org/1.5.5/$injector/nomod?p0=app 

並在某些控制器我得到以下錯誤。

Argument 'ControllerName' is not a function, got undefined 

這很奇怪,因爲當我在加載的腳本中查看這個控制器是控制器是肯定加載的。

當聲明angularjs控制器我使用以下模式。

marketConfigWizardCtrl.$inject = ['$scope', 'close']; 
angular.module('PcoreManager').controller('marketConfigWizardCtrl', marketConfigWizardCtrl); 

function marketConfigWizardCtrl($scope, close){ 
} 

回答

1

您是否試過這種模式?

var MyController = function($scope, greeter) { 
    // ... 
} 
MyController.$inject = ['$scope', 'greeter']; 
someModule.controller('MyController', MyController); 

根據文檔:https://docs.angularjs.org/guide/di

爲了讓minifiers重命名功能參數和仍然 能夠注入正確的服務,該功能需要被註釋 與$注射屬性。 $ inject屬性是要注入的服務名稱數組 。

+0

是的,我做了,但沒有奏效。原因是在縮小和捆綁期間,它會按照控制器在響應底部定義的順序生成腳本,這是真正的問題。唯一能讓它工作的方式是手動列出所有包含的內容,這實際上不是一種好方法,因爲這是企業應用程序,而且腳本太多。 –