角度控制器在生产中无法访问

时间:2014-09-22 12:22:32

标签: angularjs angularjs-scope

我有一个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;
});

});

2 个答案:

答案 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。

感谢所有参与者。