Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角度控制器在生产中不可访问_Angularjs_Angularjs Scope - Fatal编程技术网

Angularjs 角度控制器在生产中不可访问

Angularjs 角度控制器在生产中不可访问,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我有一个Symfony项目,作为绝大多数人,我使用Angular.js在不止一个环境中工作:开发和生产环境 目前,我有一个角度控制器,可以在开发环境中访问,但不能在生产环境中访问,并抛出消息:“Error:[ng:areq]参数'xxxx'不是函数,未定义”。 我在几条帖子中看到了后一条消息,但没有一条对我有帮助 angular.module('MyApp').controller('MyController', function MyController($scope, MyMapper, _

我有一个Symfony项目,作为绝大多数人,我使用Angular.js在不止一个环境中工作:开发和生产环境

目前,我有一个角度控制器,可以在开发环境中访问,但不能在生产环境中访问,并抛出消息:“Error:[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 */
        }
    ]
);

有关更多信息,请参阅,特别是“依赖项注释”部分和内联数组表示法小节。

我认为这个问题已基本解决

事实证明,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”等)?如果没有,它可能只是缺少您的文件。