Android 4.0.3上的AngularJS 1.2.9错误

时间:2014-02-05 15:06:09

标签: android angularjs cordova

尝试使用angular:

启动cordova应用程序构建时遇到错误
Web Console(3921): Uncaught Error: [$injector:modulerr] 
http://errors.angularjs.org/1.2.9/$injector/modulerr?p0=pkolApp&p1=Error%3A%20%5B%24injector%3Amodulerr%5D%20http%3A%2F%2Ferrors.angularjs.org%2F1.2.9%2F%24injector%2Fmodulerr%3Fp0%3DpkolApp.news%26p1%3DError%253A%2520%255B%2524injector%253Anomod%255D%2520http%253A%252F%252Ferrors.angularjs.org%252F1.2.9%252F%2524injector%252Fnomod%253Fp0%253DpkolApp.news%250A%2520%2520%2520%2520at%2520Error%2520(unknown%2520source)%250A%2520%2520%2520%2520at%2520file%253A%252F%252F%252Fandroid_asset%252Fwww%252Flib%252Fangular%252Fangular.min.js%253A6%253A449%250A%2520%2520%2520%2520at%2520file%253A%252F%252F%252Fandroid_asset%252Fwww%252Flib%252Fangular%252Fangular.min.js%253A20%253A260%250A%2520%2520%2520%2520at%2520file%253A%252F%252F%252Fandroid_asset%252Fwww%252Flib%252Fangular%252Fangular.min.js%253A21%253A261%250A%2520%2520%2520%2520at%2520file%253A%252F%252F%252Fandroid_asset%252Fwww%252Flib%252Fangular%252Fangular.min.js%253A29%253A175%250A%2520%2520%2520%2520at%2520Array.forEach%2520(native)%250A%2520%2520%2520%2520at%2520q%2520(file%253A%252F%252F%252Fandroid_asset%252Fwww%252Flib%252Fangular%252Fangular.min.js%253A7%253A274)%250A%2520%2520%2520%2520at%2520e%2520(file%253A%252F%252F%252Fandroid_asset%252Fwww%252Flib%252Fangular%252Fangular.min.js%253A29%253A115)%250A%2520%2520%2520%2520at%2520file%253A%252F%252F%252Fandroid_asset%252Fwww%252Flib%252Fangular%252Fangular.min.js%253A29%253A192%250A%2520%2520%2520%2520at%2520Array.forEach%2520(native)%0A%20%20%20%20at%20Error%20(unknown%20source)%0A%20%20%20%20at%20file%3A%2F%2F%2Fandroid_asset%2Fwww%2Flib%2Fangular%2Fangular.min.js%3A6%3A449%0A%20%20%20%20at%20file%3A%2F%2F%2Fandroid_asset%2Fwww%2Flib%2Fangular%2Fangular.min.js%3A30%3A1%0A%20%20%20%20at%20Array.forEach%20(native)%0A%20%20%20%20at%20q%20(file%3A%2F%2F%2Fandroid_asset%2Fwww%2Flib%2Fangular%2Fangular.min.js%3A7%3A274)%0A%20%20%20%20at%20e%20(file%3A%2F%2F%2Fandroid_asset%2Fwww%2Flib%2Fangular%2Fangular.min.js%3A29%3A115)%0A%20%20%20%20at%20file%3A%2F%2F%2Fandroid_asset%2Fwww%2Flib%2Fangular%2Fangular.min.js%3A29%3A192%0A%20%20%20%20at%20Array.forEach%20(native)%0A%20%20%20%20at%20q%20(file%3A%2F%2F%2Fandroid_asset%2Fwww%2Flib%2Fangular%2Fangular.min.js%3A7%3A274)%0A%20%20%20%20at%20e%20(file%3A%2F%2F%2Fandroid_asset%2Fwww%2Flib%2Fangular%2Fangular.min.js%3A29%3A115) at file:///android_asset/www/lib/angular/angular.min.js:30

see it on angular docs

那是我的app.js

'use strict';

angular
        .module('pkolApp', [
            'ngTouch',
            'ngRoute',
            'ngAnimate',
            'ngSanitize',
            'ng-iscroll',
            'once',
            'fsCordova',
            'pkolApp.news',
            'pkolApp.calendar',
            'pkolApp.team',
            'pkolApp.txt',
            'pkolApp.directives',
            'pkolApp.services',
            'pkolApp.controllers'
        ])
        .config(['$routeProvider', function($routeProvider) {
                $routeProvider.when('/', {templateUrl: 'partials/start.html', controller: 'StartController'});
                $routeProvider.when('/sponsors', {templateUrl: 'partials/sponsors.html', controller: 'SponsorsController'});
                $routeProvider.when('/main', {templateUrl: 'partials/main.html', controller: 'MainController'});
                $routeProvider.when('/oursponsors', {templateUrl: 'partials/our-sponsors.html', controller: 'OurSponsorsController'});
                $routeProvider.when('/team', {templateUrl: 'partials/team.html', controller: 'TeamController'});
                $routeProvider.when('/team/:sport', {templateUrl: 'partials/team-list.html', controller: 'TeamController'});
                $routeProvider.when('/team/:sport/:person', {templateUrl: 'partials/team-person.html', controller: 'TeamController'});
                $routeProvider.when('/news', {templateUrl: 'partials/news.html', controller: 'NewsListController'});
                $routeProvider.when('/news/:newsId', {templateUrl: 'partials/news-read.html', controller: 'NewsController'});
                $routeProvider.when('/calendar', {templateUrl: 'partials/calendar.html', controller: 'CalendarController'});
                $routeProvider.when('/calendar/:day', {templateUrl: 'partials/calendar.html', controller: 'CalendarController'});
                $routeProvider.when('/page/:page', {templateUrl: 'partials/page.html', controller: 'TextController'});
                $routeProvider.otherwise({redirectTo: '/main'});
            }]);

angular.module('fsCordova', [])
        .service('CordovaService', ['$document', '$q', function($document, $q) {
                var d = $q.defer(),
                        resolved = false;

                var self = this;
                this.ready = d.promise;

                document.addEventListener('deviceready', function() {
                    resolved = true;
                    d.resolve(window.cordova);
                });

                setTimeout(function() {
                    if (!resolved) {
                        if (window.cordova)
                            d.resolve(window.cordova);
                    }
                }, 3000);
            }]);

/* Controllers */

angular.module('pkolApp.controllers', [])
        .controller('MainCtrl', ['$scope', '$rootScope', '$window', '$location', 'updateService', 'CordovaService', function($scope, $rootScope, $window, $location, updateService, CordovaService) {
                CordovaService.ready.then(function() {
                    $rootScope.isLoading = false;
                    $scope.slide = '';

                    $rootScope.back = function() {
                        $rootScope.isLoading = true;
                        $scope.slide = 'slide-left';
                        $window.history.back();
                    };
                    $rootScope.go = function(path) {
                        $rootScope.isLoading = true;
                        $scope.slide = 'slide-left';
                        $location.path(path);
                    };
                    $rootScope.$on('$routeChangeSuccess', function() {
                        $rootScope.isLoading = false;
                    });
                });
            }])
        .controller('StartController', ['$scope', '$timeout', '$rootScope', 'CordovaService', function($scope, $timeout, $rootScope, CordovaService) {
                var init = function() {
                    $rootScope.go('/sponsors');
                };
                CordovaService.ready.then(function() {
                    $timeout(init, 3000);
                });
            }])
        .controller('SponsorsController', ['$scope', '$timeout', '$rootScope', 'CordovaService', function($scope, $timeout, $rootScope, CordovaService) {
                var init = function() {
                    $rootScope.go('/main');
                };

                $scope.$on('$viewContentLoaded', function() {
                    $timeout(init, 4000);
                });
            }])
        .controller('MainController', ['$scope', function($scope) {

            }])
        .controller('OurSponsorsController', ['$scope', function($scope) {

            }])
        .controller('TeamController', ['$scope', '$routeParams', 'Team', function($scope, $routeParams, Team) {
                $scope.sports = Team.sports();
                if (typeof $routeParams.sport != 'undefined') {
                    var $sport = $routeParams.sport;
                    $scope.sport = Team.getSport({id: $sport});
                    $scope.persons = Team.getTeam({id: $sport});
                    $scope.picturePath = Team.picturePath();
                }

                if (typeof $routeParams.person != 'undefined') {
                    var $person = $routeParams.person;
                    $scope.person = Team.getPerson({id: $person});
                }

                $scope.iconPathBlack = Team.icon('black');
                $scope.iconPathWhite = Team.icon('white');
            }])
        .controller('NewsListController', ['$scope', 'News', function($scope, News) {
                $scope.list = News.query();
            }])
        .controller('NewsController', ['$scope', '$routeParams', 'News', function($scope, $routeParams, News) {
                $scope.nws = News.get({id: $routeParams.newsId});
                $scope.showBody = function() {
                    return $sce.trustAsHtml($scope.news.body);
                };
            }])
        .controller('CalendarController', ['$scope', '$routeParams', 'Calendar', '$http', function($scope, $routeParams, Calendar, $http) {
                if (typeof $routeParams.day != 'undefined') {
                    var $day = $routeParams.day;
                } else {
                    var $day = -1;
                }
                $scope.iconPath = Calendar.icon('black');
                $scope.days = Calendar.days();
                $scope.day = Calendar.get({id: $day});
                $scope.Pol = function(v) {
                    if (v == 1) {
                        return true;
                    } else {
                        return false;
                    }
                };
            }])
        .controller('TextController', ['$scope', '$routeParams', 'Txt', function($scope, $routeParams, Txt) {
                if (typeof $routeParams.page != 'undefined') {
                    var $page = $routeParams.page;
                    $scope.page = Txt.get($page);
                }
            }]);

angular.module('pkolApp.services', [])
        .service('updateService', ['$rootScope', '$http', '$interval', 'Calendar', 'Team', 'News', 'Txt', function($rootScope, $http, $interval, Calendar, Team, News, Txt) {
                $rootScope.isUpdating = true;
                $http.jsonp("http://www.domain.com/app/update?callback=JSON_CALLBACK")
                        .success(function(data, status) {
                            Calendar.import(data.calendar);
                            Team.import(data.team, data.sports);
                            News.import(data.news);
                            Txt.import(data.pages);
                            $rootScope.isUpdating = false;
                        })
                        .error(function(status) {
                            $rootScope.isUpdating = false;
                        });

                var getData = function() {
                    $rootScope.isUpdating = true;
                    $http.jsonp("http://www.domain.com/app/update?callback=JSON_CALLBACK")
                            .success(function(data, status) {
                                Calendar.import(data.calendar);
                                Team.import(data.team, data.sports);
                                News.import(data.news);
                                Txt.import(data.pages);
                                $rootScope.isUpdating = false;
                            })
                            .error(function(data, status) {
                                $rootScope.isUpdating = false;
                            });
                };

                $interval(getData, 900000);
            }]);

/* Directives */

angular.module('pkolApp.directives', [])
        .directive('appVersion', ['version', function(version) {
                return function(scope, elm, attrs) {
                    elm.text(version);
                };
            }])
        .directive('expandable', function() {
            return {
                link: function(scope, element, attrs) {
                    scope.$watch("page.body", function(val) {
                        if (val) {
                            $('.expandable').Expandable();
                        }
                    });
                }
            }
        });

在Android 4.1,4.2甚至2.3.6上,一切都很完美。此外,还包括所有必需的模块等。我检查了一切,现在我被卡住了......

即使仅在index.html中附加了angular.js,这个错误似乎也会出现。

任何提示?

0 个答案:

没有答案