[英]Angular controller not accessible in production
我有一個Symfony項目,並且絕大多數人都在多個環境中工作:使用Angular.js進行開發和生產。
目前,我有一個Angular控制器,可以在開發環境中訪問它,但不能在生產環境中訪問它,並拋出一條消息:“錯誤:[ng:areq]參數'xxxx'不是函數,未定義”。 我在多個線程中看到了后一個消息,但是沒有一個對我有幫助。
angular.module('MyApp').controller('MyController', function MyController($scope, MyMapper, _, moment, APP_URL, $location) {
$scope.APP_URL = APP_URL;
$scope.momentjs = moment;
$scope.isLoading = 1;
$scope.page = 1;
$scope.totalPagesNum = 1;
$scope.limit = 20;
// fill the table with data
MyMapper.find($location.search()).then(function(data) {
// ...
})();
}).then(function() {
$scope.isLoading = false;
});
});
如果要最小化代碼(這在生產中很常見),則將需要注釋依賴項,因為它們可能會被最小化腳本重命名。 為此,請對您的代碼使用以下模式:
angular.module('MyApp').controller('MyController',
['$scope','MyMapper','_','momemt','APP_URL','$location',
function($scope, MyMapper, _, moment, APP_URL, $location) {
/* your code for the controller */
}
]
);
請參閱https://docs.angularjs.org/guide/di了解更多信息,尤其是“ Dependency Annotation”部分和inline array notation子部分。
我認為這個問題已經解決了。
事實證明,vendors.js(vendros.min.js)的縮小版未在生產環境中正確加載。 因此,我必須在我的Gruntfile.js中指向正確的目錄。
其次,按照Brad的說明,我根據AngularJS在線指南重構了控制器。
謝謝大家參與。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.