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并导致错误的路由,然后是白屏. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |