Angularjs 角度控制器在生产中不可访问
我有一个Symfony项目,作为绝大多数人,我使用Angular.js在不止一个环境中工作:开发和生产环境 目前,我有一个角度控制器,可以在开发环境中访问,但不能在生产环境中访问,并抛出消息:“Error:[ng:areq]参数'xxxx'不是函数,未定义”。 我在几条帖子中看到了后一条消息,但没有一条对我有帮助Angularjs 角度控制器在生产中不可访问,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我有一个Symfony项目,作为绝大多数人,我使用Angular.js在不止一个环境中工作:开发和生产环境 目前,我有一个角度控制器,可以在开发环境中访问,但不能在生产环境中访问,并抛出消息:“Error:[ng:areq]参数'xxxx'不是函数,未定义”。 我在几条帖子中看到了后一条消息,但没有一条对我有帮助 angular.module('MyApp').controller('MyController', function MyController($scope, MyMapper, _
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 */
}
]
);
有关更多信息,请参阅,特别是“依赖项注释”部分和内联数组表示法小节。我认为这个问题已基本解决 事实证明,vendors.js的缩小版(vendros.min.js)没有正确加载到生产环境中。因此,我必须在Gruntfile.js中指出正确的一个 其次,根据Brad的说法,我根据AngularJS在线指南重构了我的控制器
感谢所有相关人员。您的错误消息中确实包含“xxxx”?不,它实际上是“MyController”。我非常确定您应该使用“function($scope)”而不是“function MyController($scope,”。与Symfony 2无关。不幸的是,这不起作用。问题是我可以在开发环境中正常访问控制器和页面。您是否尝试过最流行的缓存清除?您的web服务器日志是否表明服务器正在被攻击?似乎很奇怪。看起来您问题上的标记已更改。谢谢r回答,Brad。我刚刚试过,但它仍然不起作用。也许它在开发环境中正常工作,而在生产环境中不正常工作这一事实表明了其他一些事情?可能表明了很多事情。如果没有看到生产脚本,很难判断。可能你的bundle/min脚本缺少该文件。如果你查看源代码和打开缩小的文件,是否看到该控制器的字符串(“$scope”、“MyMapper”等)?如果没有,它可能只是缺少您的文件。