我在PhoneGap中遇到ngView的问题。
一切似乎都可以正常加载,我什至可以使用ng-controller使基本控制器正常工作。但是,当我尝试在ngView中使用路由时,什么也没发生。
index.html
<!doctype html>
<html ng-app>
<head>
<script type="text/javascript" src="lib/cordova-2.4.0.js"></script>
<script type="text/javascript" src="lib/angular-1.0.4.min.js"></script>
<script type="text/javascript" src="js/app.js"></script>
</head>
<body>
<a href="#/test">Test</a>
<div ng-view></div>
</body>
</html>
app.js
angular.module('App', []).config(function ($routeProvider) {
$routeProvider.when('/test', {
controller: TestCtrl,
template: '<h1> {{ test }} </h1>'
});
});
function TestCtrl($scope) {
$scope.test = "Works!";
}
onMessage(onPageFinished, fle:///android_asset/www/index.html#/test)
每次单击链接时,Eclipse记录器都会显示该链接,而在没有链接的情况下尝试该链接#
会引发一个错误,即找不到该路径。
从我在其他任何地方已经做好的准备,这应该可以正常工作。任何帮助将不胜感激。
在搜索了几个问题和论坛之后,我终于使它可靠地工作了。这就是我从一个干净的PhoneGap项目中运行它所需要的。
index.html
<!DOCTYPE html>
<html ng-app="App">
<head>
<meta http-equiv="Content-Type" content="text/html; 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, target-densitydpi=device-dpi" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<title>Hello World</title>
</head>
<body>
<a href="#/">Main View</a>
<a href="#/view">New View</a>
<div ng-view></div>
<!-- Libs -->
<script type="text/javascript" src="lib/cordova-2.5.0.js"></script>
<script type="text/javascript" src="lib/angular-1.0.5.js"></script>
<!-- App -->
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript" src="js/routers.js"></script>
<script type="text/javascript" src="js/controllers.js"></script>
<script type="text/javascript">
app.initialize();
</script>
</body>
</html>
注意<html ng-app="App">
标签。如果没有该指令的值,该应用程序将无法加载,因此请确保其中包含一个。
index.js
var app = {
initialize: function() {
this.bindEvents();
},
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, true);
},
onDeviceReady: function() {
angular.element(document).ready(function() {
angular.bootstrap(document);
});
},
};
在此文件中,当PhoneGap触发'ondeviceready'
事件时,我们将手动引导Angular 。
routers.js
angular.module('App', [])
.config(function ($compileProvider){
$compileProvider.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|tel):/);
})
.config(function ($routeProvider) {
$routeProvider
.when('/', {
controller: TestCtrl,
templateUrl: 'partials/main.html'
})
.when('/view', {
controller: ViewCtrl,
templateUrl: 'partials/view.html'
});
});
该文件中有两个重要内容。首先,我们使用之前在中使用的相同名称创建模块<html np- app="App">
。其次,我们需要将路由器配置为将文件URI列入白名单。我个人不需要这个,但是似乎有几个人遇到了这个问题,因此我将其包括在内。
controllers.js
function TestCtrl($scope) {
$scope.status = "It works!";
}
function ViewCtrl($scope) {
$scope.status = "Also totally works!";
}
最后,只是一些基本的控制器。
我已经在这里创建了一个github存储库。
希望这对其他人有帮助。
问题内容: 我尝试将Angle.js与PhoneGap一起使用,它在chrome浏览器上可以正常工作,但是 在ng-view标签上不起作用,并且在模拟器上运行angular模块时不会调用它。你有什么主意吗? 我的代码是这样的。 index.html index.js router.js 问题答案: 尝试使用bootstrap api方法在deviceReady上手动启动应用程序。就像是: http
问题内容: 我有一个视图,其中父div上具有ng-if,而某些子元素上具有ng-show。嵌套在带有ng-if的元素下时,ng- show似乎无法正常工作。这是Angular错误还是我做错了什么? 见这个矮子。 HTML: JavaScript: 谢谢, 安迪 问题答案: 与指令不同,它 创建了一个新的作用域* 。 * 因此,当您在内部编写内容时,您是在子范围而非主范围上设置属性。 要解决此问题,
问题内容: 我已经工作了几个小时,以使我的链接可以通过AngularJS应用点击进入不同的视图。 但是,我似乎只能在Plunker上在线使用该功能。 我一直在尝试在本地计算机上测试点击功能,并且ng-view似乎未加载。当我下载我知道正确的Plunker代码时,因为它可以在Plunker上运行,所以ng- view在本地托管后似乎停止工作。 我对ng-include和我定义为自己的HTML标签的指
问题内容: 在我的应用程序中的多条路线之间导航时,我在angularJS中遇到document.ready问题。它仅在使用ctrl + f5(页面重新加载)时有效;似乎在页面之间导航不会将文档的状态更改为就绪。 控制者 主HTML文件 应用程式档案 问题答案: 您可以在路由定义你的控制器即听和对事件。每次重新加载ngView内容时都会发出,并且应提供与angularjs中路由时类似的功能: 该也触
问题内容: 我正在尝试在有角度的JS应用中实现视频元素,并且ng-src不会读取范围变量 我正在使用1.2.0-rc.2 如果我使用的是较旧版本的AngularJS库,则可以使用。 这是最新版本中的错误,还是故意将其禁用?解决方法是什么? 问题答案: 经过一些调试后,我发现错误是这样的: http://errors.angularjs.org/1.2.0-rc.2/ $ interpolate /
问题内容: 我需要将变量传递给另一个控制器。我有以下与ListCtrl相关的代码: 链接将转到另一个控制器ItemCtrl。 我想将变量传递给ItemCtrl。我想到了使用一个名为SharedProperties的服务: 单击链接后,我将调用角度单击事件以触发以下功能: 但是,ng-click似乎并没有改变我共享属性的值… 更新 我在ng-click触发的函数中放置了一个警报,并且警报应该被触发。