为啥我的 AngularJS 视图无法在 Cordova 中加载?

Posted

技术标签:

【中文标题】为啥我的 AngularJS 视图无法在 Cordova 中加载?【英文标题】:Why won't my AngularJS view load in Cordova?为什么我的 AngularJS 视图无法在 Cordova 中加载? 【发布时间】:2014-05-21 14:36:15 【问题描述】:

我的index.html 是:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="format-detection" content="telephone=no" />
    <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height" />
    <link rel="stylesheet" type="text/css" href="css/index.css" />
    <title>Hello World</title>
  </head>
  <body ng-app="app">
    THIS WORKS NOW!
    <div ng-view></div>
    <script type="text/javascript" src="cordova.js"></script>
    <script type="text/javascript" src="js/angular.min.js"></script>
    <script type="text/javascript" src="js/angular-route.min.js"></script>
    <script type="text/javascript" src="js/app.js"></script>
  </body>
</html>

app.js,我有:

var app = angular.module('app', ['ngRoute']);

app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) 
    $routeProvider.when('/', 
      templateUrl: 'templates/home.html'
    ).when('/dashboard', 
      templateUrl: '/templates/dashboard.html'
    ).otherwise(
      redirectTo: '/'
    );

    $locationProvider.html5Mode(true);
  
]);

所以我运行cordova build ios,创建一个 xcode 项目确实很神奇,然后我打开并运行它。我看到了THIS WORKS NOW!,但我没有看到我的home.html 文件的内容。

我做错了什么?

【问题讨论】:

来自app.js 的代码是否包含在由deviceready 事件侦听器调用的函数中? 【参考方案1】:

你需要引导角度:

app.js 很好!

但删除标签&lt;body&gt; 内的ng-app 并在触发事件onDeviceReady 时启动角度:

index.js文件:

var app = 
    initialize: function () 
        this.bindEvents();
    ,
    bindEvents: function () 
        document.addEventListener("deviceready", this.onDeviceReady, false);
    ,
    onDeviceReady: function () 
        angular.element(document).ready(function () 

            angular.bootstrap(document, ["app"]);

        );
    
;

通常你只需要这样做。

【讨论】:

好答案。但是为什么需要延迟呢?我认为没有它 JS 会正常加载,只有在利用硬件插件时才需要 onDeviceReady?

以上是关于为啥我的 AngularJS 视图无法在 Cordova 中加载?的主要内容,如果未能解决你的问题,请参考以下文章

Angularjs:为啥页面刷新会破坏 $rootScope 的值?

如何在 angularjs 应用程序的部分视图中包含 css 或 javascript 文件...? [关闭]

模型更新时无法让 Angularjs 更新视图

为啥我无法在 AppDelegate 中以编程方式更改我的初始视图控制器?

为啥我在关闭视图控制器后无法显示我的 Facebook 插页式广告?

iOS 8:为啥 NSLayoutAttributeCenterX 无法将我的视图居中? (适用于 iOS 7)