angularjs – 如何调试我的离子/角度/ phonegap / cordova应用程
| 
 我在 
 Ionic项目( 
 AngularJS 
 Apache Cordova又名Phonegap)上工作. 
  
  我的项目的第一个代码行是4个月,而昨天,应用程序不再适用于模拟器和真实设备,但仍然适用于chrome窗口.所以我想我的角度代码是正确的,但我不知道问题在哪里,我不知道如何处理它. 一开始我直接在我的www文件夹中编码,我测试它是使用devtools和设备仿真的chrome,或者使用Apache Ripple扩展的chrome,有时我将它安装到我的真实设备(Nexus S)中. 我最近在我的项目中安装了grunt和bower用于常见任务,我决定重新组织我的项目文件夹. 然后,我现在编码到一个src文件夹,并: >在使用chrome进行测试之前,我运行grunt’dev’任务,创建一个www文件夹,并包含一个链接到scr / js,html,css和其他res文件的专用index.html. 它们都可以在chrome中正常工作,但是当我构建(通过cordova-cli或phonegap build)并在模拟器或真实设备上安装应用程序时,我会获得启动画面,然后是永久白屏. 我尝试在weinre的帮助下调试它,并注意到js控制台没有捕获任何抛出的错误. angular.module(‘app’).执行run(),但永远不会执行第一个AppCtrl控制器. 这是我的模块代码(这篇文章的重要部分): (function(){ 
    angular.module('app',[
        'ionic','ngCordova','app.auth','app.model','app.action',// 'app.test',])
    .run(['$ionicPlatform',function($ionicPlatform) {
        alert("app.run()  runs ...");
    }])
    .config(['$stateProvider','$urlRouterProvider',function($stateProvider,$urlRouterProvider) {
        var tmplt_dir = 'modules/app/tmplt';
        var tmplt = function(viewName){
            return tmplt_dir + '/' + viewName + '.html' ;
        };
        $stateProvider
            .state('app',{
                url: "/app",abstract: true,templateUrl: tmplt('app'),controller: 'AppCtrl'
            })    
            .state('app.main',{
                url: "/main",abstract: false,views: {
                    "menuContent" : {
                        templateUrl:  tmplt('main'),controller: 'MainCtrl'
                    }
                }
            })
            .state('app.main.home',{
                url: "/home",views: {
                    'homeTabContent' :{
                        templateUrl: tmplt('home'),controller: 'HomeCtrl'
                    }
                }
            });
        // if none of the above states are matched,use this as the fallback
        $urlRouterProvider.otherwise('/app/main/home');  
    }])
    .controller('AppCtrl',[ '$rootScope','$cordovaToast','$window',function($rootScope,$cordovaToast,$window) {
        alert('AppCtrl runs...');
        $rootScope.notImplementedException = function(){
            var message = "Bient?t disponible.";
            try {
                $cordovaToast.showShortCenter(message);
            } catch(e){
                alert(message);
            }
        };
        $rootScope.browserOpen = function(href){
            var ref = $window.open(href,'_system','location=yes');
        };
    }])
    .controller('MainCtrl',[ function() {
        alert('MainCtrl runs...');
    }])    
    .controller('HomeCtrl','$auth','$app',$auth,$app) {
        alert('HomeCtrl runs...');
        if (!$auth.checkLogin()) {
            $auth.authError();
        }
        $rootScope.appName = $app.name;
    }])
})();出现的唯一警报是: > app.run()运行… 因此,未出现的警报是: > AppCtrl运行… 请记住,在chrome中,一切都完美无缺! 这个问题真是令人费解,我已经失去了几个小时来跟踪它,但没有成功. 任何的想法 ? 
 我解决了我的问题. 
  
  实际上,我写了一个httpRequestInterceptor工厂,它检查是否必须签署一个url才能使用我的Rest API. 最近我的项目文件夹的结构发生了变化,导致这个工厂有时会返回错误的结果,然后签署一些本地URL并导致错误的路由,然后是白屏. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! | 
