2016-08-08 61 views
2

我是角和科爾多瓦noob。我正在開發一個科爾多瓦應用程序。我有以下代碼:在科爾多瓦的角度ng視圖不起作用

app.js:

var myApp = angular.module('myApp', ['ngSanitize', 'ngAnimate', 'ngRoute']). 
config(function ($routeProvider) { 
    $routeProvider 
     .when('/home', { 
      templateUrl: '/home.html', 
      controller: 'homeController' 
     }) 
     .when('/login', { 
      templateUrl: '/login.html', 
      controller: 'loginController' 
     }) 
     .when('/register', { 
      templateUrl: '/register.html', 
      controller: 'registerController' 
     }) 
     .otherwise({ 
      redirectTo: '/home.html' 
     }) 
}) 
.run(['$rootScope', '$location', 'authProvider', function ($rootScope, $location, authProvider) { 
    $rootScope.$on('$routeChangeStart', function (event) { 
     if (!authProvider.isLoggedIn()) { 
      alert('login'); 
      $location.path('/login') 
     } 
    }); 
}]). 
factory('authProvider', function() { 
    var user; 
    return { 
     setUser: function (aUser) { 
      alert('set user'); 
      user = aUser; 
     }, 
     isLoggedIn: function() { 
      alert('is loged in'); 
      return (user) ? true : false; 
     } 
    }; 
}); 

而且我index.js是如下:

var app = { 
initialize: function() { 
    this.bindEvents(); 
}, 

bindEvents: function() { 
    document.addEventListener('deviceready', this.onDeviceReady, false); 
}, 
onDeviceReady: function() { 
    app.receivedEvent('deviceready'); 

    angular.bootstrap(document, ['myApp']); 
}, 
receivedEvent: function (id) { 
    console.log('Received Event: ' + id); 
} 
}; 
app.initialize(); 

而我的index.html是如下:

<!DOCTYPE html> 
<html> 

<head> 
<meta charset="UTF-8"> 
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *"> 
<meta name="format-detection" content="telephone=no"> 
<meta name="msapplication-tap-highlight" content="no"> 
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width"> 

<!--Shared Scripts--> 
<script type="text/javascript" src="js/shared/jquery.min.js"></script> 

<script type="text/javascript" src="js/shared/angular.js"></script> 
<script type="text/javascript" src="js/shared/angular-route.min.js"></script> 
<script type="text/javascript" src="js/shared/angular-animate.min.js"></script> 
<script type="text/javascript" src="js/shared/angular-sanitize.min.js"></script> 

<!--Custom Scripts--> 
<script type="text/javascript" src="js/index.js"></script> 
<script type="text/javascript" src="js/app.js"></script> 
<script type="text/javascript" src="js/homeController.js"></script> 
<script type="text/javascript" src="js/loginController.js"></script> 

<title></title> 
</head> 

<body> 
<div ng-view></div> 
<script type="text/javascript" src="cordova.js"></script> 
</body> 

</html> 

當我在瀏覽器中模擬我的應用程序(cordova emulate browser)時,每件事情都OK,ng-view很好地工作,但是當我運行它在Android設備上(cordova run android),ng-view不起作用!

我也嘗試添加:

$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|tel):/); 
    $compileProvider.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|tel):/); 

我app.js,但沒有成功!我也試圖定義我htmlbody如下:

<html ng-app='myApp'> 

<body ng-app='myApp'> 

但沒有成功!

我使用AngularJs 1.5.8和6.2.0科爾多瓦和運行我的應用程序在Android 4.0

更新

檢查的是Android 5.0設備後,我發現有一個錯誤,說:

Failed to load resource: net::ERR_FILE_NOT_FOUND file:///login.html Error: [$compile:tpload] Failed to load template: /login.html (HTTP status: -1)

請你幫我解決這個問題?

謝謝

+0

我不認爲把'NG-app'指令的' '標籤將起作用。您是否嘗試將其添加到您的''或''標記中? – Lex

+0

@Lex這是一個寫錯誤,我更新了我的問題。我嘗試了兩種,但仍然沒有成功! –

+0

您可以使用谷歌瀏覽器調試您的應用程序,即在url地址處輸入'chrome:// inspect',並檢查您的所有js文件是否正在加載。 – slackmart

回答

0

我終於找到了解決辦法。

只是提出我的意見(login.htmlhome.html)到一個文件夾(例如views)和前加點我UrlTemplate

$routeProvider 
     //define the routes and their corresponded controllers 
     .when('/home', { 
      templateUrl: './views/home.html', 
      controller: 'homeController' 
     }) 
     .when('/login', { 
      templateUrl: './views/login.html', 
      controller: 'loginController' 
     }) 
     .when('/register', { 
      templateUrl: './views/register.html', 
      controller: 'registerController' 
     }) 
     .otherwise({ 
      redirectTo: './views/home.html' 
     })