Cordova 角度ng视图/路由在PhoneGap中不工作
我在PhoneGap中的ngView有问题 一切似乎都加载刚刚好,我甚至可以得到一个基本的控制器工作使用ng控制器。但是当我尝试使用ngView路由时,什么都没有发生 index.htmlCordova 角度ng视图/路由在PhoneGap中不工作,cordova,routing,angularjs,angular-routing,Cordova,Routing,Angularjs,Angular Routing,我在PhoneGap中的ngView有问题 一切似乎都加载刚刚好,我甚至可以得到一个基本的控制器工作使用ng控制器。但是当我尝试使用ngView路由时,什么都没有发生 index.html app.js angular.module('App',[]).config(函数($routeProvider){ $routeProvider.when(“/test”{ 控制器:TestCtrl, 模板:“{test}}” }); }); 函数TestCtrl($scope){ $scope.tes
app.js
angular.module('App',[]).config(函数($routeProvider){
$routeProvider.when(“/test”{
控制器:TestCtrl,
模板:“{test}}”
});
});
函数TestCtrl($scope){
$scope.test=“工作!”;
}
Eclipse记录器在消息上显示onMessage(onPageFinished,fle:///android_asset/www/index.html#/test)
每次我单击链接时,如果不使用#
尝试该链接,只会引发一个无法找到路径的错误
根据我在其他地方的准备,这应该是有效的。任何帮助都将不胜感激。我的问题是域名白名单 基本上,您的.config需要如下所示:
angular.module('App', []).config(function ($routeProvider, $compileProvider) {
$routeProvider.when('/test', {
controller: TestCtrl,
template: '<h1> {{ test }} </h1>'
});
$compileProvider.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|tel):/);
});
angular.module('App',[]).config(函数($routeProvider,$compileProvider){
$routeProvider.when(“/test”{
控制器:TestCtrl,
模板:“{test}}”
});
$compileProvider.urlsanizationwhitelist(/^\s*(https?| ftp | mailto | file | tel):/);
});
在搜索了几个问题和论坛后,我终于让它可靠地工作了。这就是我从一个干净的PhoneGap项目中运行它所花费的时间
index.html
你好,世界
app.initialize();
注意
标记。如果没有指令的值,应用程序将无法加载,因此请确保包含一个值
index.js
var-app={
初始化:函数(){
这是bindEvents();
},
bindEvents:function(){
document.addEventListener('devicerady',this.ondevicerady,true);
},
ondevicerady:function(){
元素(文档).ready(函数(){
角度引导(文档);
});
},
};
在这个文件中,当PhoneGap触发'ondeviceready'
事件时,我们将手动引导Angular
路由器.js
angular.module('App',[])
.config(函数($compileProvider){
$compileProvider.urlsanizationwhitelist(/^\s*(https?| ftp | mailto | file | tel):/);
})
.config(函数($routeProvider){
$routeProvider
。当(“/”{
控制器:TestCtrl,
templateUrl:'partials/main.html'
})
.when(“/view”{
控制器:ViewCtrl,
templateUrl:“partials/view.html”
});
});
这个文件中有两件重要的事情。首先,我们使用之前在
中使用的相同名称创建模块。其次,我们需要将路由器配置为白名单
文件URI。我个人并不需要这个,但似乎有几个人遇到了这个问题,所以我把它包括在内
controllers.js
函数TestCtrl($scope){
$scope.status=“它有效!”;
}
函数ViewCtrl($scope){
$scope.status=“也完全有效!”;
}
最后,只是一些基本的控制器
我用所有这些创建了一个github回购协议
希望这对其他人有所帮助。Angular 1.2没有提供此方法
$compileProvider.urlSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|tel):/)
不管怎么说,似乎已经没有必要了。我在我的手机上测试了它,它可以在没有的情况下工作。我通过禁用Google Chrome中的本地访问策略标志解决了这个问题
$ open -a Google\ Chrome --args --disable-web-security for Mac OS.
以下是如何禁用本地访问文件策略的说明。FWIW-这是我为这个问题支付的2美分: 所有这些似乎都起到了作用,促使我朝着一个可以工作的应用程序迈进,但我仍然无法让$routeprovider在页面之间导航 我的最后一个问题是——我在jqueryMobile库的一个脚本标记中有一个include,它在Angular获得URL请求之前劫持了这些请求。当我移除它时,导航请求最终到达$routeprovider,现在一切正常
希望这有助于某人…万一有人遇到这种情况,UrlSanitationWhitelist是angular较新版本中的AHRefSanitationWhitelist一年后的情况:我注意到在Cordova中以这种方式引导angular会产生以下错误:“”错误:ng:btstrpd应用程序已使用此元素“document”“引导”-表示angular已加载。我遇到了类似错误。解决方案是,如果调用angular.bootstrap,则不要将“ng app”属性添加到HTML中。您可以执行一项或另一项操作,但不能同时执行两项操作。是否可以将模块传递给变量,如var appModule=angular.module('App',[])等?您将在何处初始化webSql数据库?您应该使用
ng href
而不是普通的href
,以便angular可以正确重写URL。请尝试ahrefsanitationwhitelist