我的项目的第一个代码行是4个月,而昨天,应用程序不再适用于模拟器和真实设备,但仍然适用于chrome窗口.所以我想我的角度代码是正确的,但我不知道问题在哪里,我不知道如何处理它.
一开始我直接在我的www文件夹中编码,我测试它是使用devtools和设备仿真的chrome,或者使用Apache Ripple扩展的chrome,有时我将它安装到我的真实设备(Nexus S)中.
我最近在我的项目中安装了grunt和bower用于常见任务,我决定重新组织我的项目文件夹.
然后,我现在编码到一个src文件夹,并:
>在使用chrome进行测试之前,我运行grunt’dev’任务,创建一个www文件夹,并包含一个链接到scr / js,html,css和其他res文件的专用index.html.
>在模拟器或真实设备中测试之前,我运行grunt’prod’任务,包括构建或复制所有需要的文件到应用程序(app.min.css,app.min.js,模板,字体和媒体文件,图标).
它们都可以在chrome中正常工作,但是当我构建(通过cordova-cli或phonegap build)并在模拟器或真实设备上安装应用程序时,我会获得启动画面,然后是永久白屏.
我尝试在weinre的帮助下调试它,并注意到js控制台没有捕获任何抛出的错误.
但是我放置了一些console.log,看起来路由已经坏了.
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运行…
> MainCtrl运行…
> HomeCtrl运行…
请记住,在chrome中,一切都完美无缺!
这个问题真是令人费解,我已经失去了几个小时来跟踪它,但没有成功.
任何的想法 ?