我有一个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;
});
});
答案 0 :(得分:1)
如果要最小化代码(在生产中是典型的),您将需要注释依赖项,因为它们可能会被最小化脚本重命名。为此,请为您的代码使用以下模式:
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以获取更多信息,尤其是"依赖关系注释"部分和内联数组表示法小节。
答案 1 :(得分:0)
我认为这个问题已经解决了。
事实证明,vendor.js(vendros.min.js)的缩小版本未在生产环境中正确加载。因此,我必须在Gruntfile.js中找到正确的一个。
其次,根据AngularJS在线指南重构我的控制器,按照Brad。
感谢所有参与者。