在Android版本4.4.2上运行时应用程序中断,抛出错误:[ng:areq]

时间:2016-04-28 08:01:10

标签: javascript angularjs ionic-framework

当我使用离子运行时,我的应用程序在启动时路由到discover.html,调用DiscoverCtrl会抛出错误:

Error: [ng:areq] http://errors.angularjs.org/1.4.3/ng/areq?p0=DiscoverCtrl&p1=not%20a%20function%2C%20got%20undefined

但是当我路由到AnsweredCtrl时,它正确加载,那里没有问题。 此外,只有在低于api级别22的版本中才会发生这种情况。当我在更高版本中运行应用程序时,它会顺利运行并且不会出错。我无法确定这是一个离子问题还是在构建应用程序时。我已经尝试在config.xml中减少minSdk,但这也没有帮助。也许我正在犯一个菜鸟错误。在此先感谢您的帮助

discover.controller.js

 (function () {
    'use strict';
    angular
        .module('app.discover')
        .controller('DiscoverCtrl', DiscoverCtrl);
    DiscoverCtrl.$inject = ['$scope', 'ConnectivityMonitor', 'serverPath', '$stateParams', 'EndUser', '$timeout', '$compile', 'localStorageService', '$ionicHistory', 'cdnPath'];

    function DiscoverCtrl($scope,ConnectivityMonitor,serverPath,$stateParams,EndUser,$timeout,$compile,localStorageService,$ionicHistory,cdnPath) {

        var vm = this;
        ConnectivityMonitor.startWatching();
        $scope.somefunction = function(){};


    }

    })();

answered.controller.js

    (function () {
    'use strict';

    angular
        .module('app.answered')
        .controller('AnsweredCtrl', AnsweredCtrl);
    AnsweredCtrl.$inject = ['ConnectivityMonitor','serverPath','$scope','QuestionService','$timeout','$compile', 'localStorageService', 'cdnPath', 'QuestionListService'];

    function AnsweredCtrl (ConnectivityMonitor,serverPath, $scope, QuestionService, $timeout, $compile, localStorageService, cdnPath, QuestionListService) {
       var vm = this;
       $scope.somefunction = function(){};
   }
})();

app.js

angular.module('exy', [
'app.core', // contains external services
'app.discover',

'app.answered'
])

2 个答案:

答案 0 :(得分:3)

好吧我弄清楚了问题,在我的一个功能中,我使用'let'in for for循环,所以旧的webview不支持let,删除它并修复它。

答案 1 :(得分:0)

抛出此错误是因为DiscoverCtrl的定义不正确。这可能是由以下任何原因引起的:

  1. 您正在访问模块app.discover而未先定义它。确保使用以下语句在此控制器定义之前定义模块:angular.module('app.discover', [])语法

  2. 您的依赖项不正确导致控制器定义不正确。

  3. 如果您未在ng-app指令

  4. 中指定应用名称,也可以这样做

    可能的原因应该是第一个。确保1.)您正确定义模块并且2.)没有定义它两次