大编辑!!!毕竟问题不在于window.location,而是在设备准备好之前初始化了my_button_click函数。我身上的错误很大。 另外,我不得不更改div,它使用按钮响应ng-click以使其正常工作。
$ionicPlatform.ready(function() {
$scope.my_button_click = function() {
//...
}
});

<button class="my_button" ng-click="my_button_click()"></button>
&#13;
我正在为所有平台开发一个cordova应用程序,它已经在Android和iOS上运行良好。
在Windows手机设备上构建和运行应用程序(编辑:Microsoft Lumia 640,Windows Phone 8.1。更新2),我遇到了一个问题。要从主屏幕导航到另一个屏幕,我使用了一个带有ng-click事件的按钮:
$scope.my_button_click = function () {
window.location.href = "#/app/another_screen";
};
&#13;
<div class="my_button" ng-click="my_button_click()">
&#13;
这适用于Android和iOS。但是,在Windows Phone 8.1上,当我第一次加载应用程序时,ng-click无效。但是,在通过应用程序进行一些随机的其他点击之后,该按钮将工作并重定向到另一个屏幕。 另一方面,第二个屏幕中的按钮(使用window.location重定向回主屏幕)根本不起作用。
On SO我发现了几个关于这个问题的问题,建议使用jquery mobile解决这个问题:
//window.location.href = "#/app/another_screen";
//replace with
$.mobile.navigate("#/app/another_screen");
&#13;
<script src="lib/jquery/jquery.min.js"></script>
<script src="lib/jquery.mobile-1.4.5/jquery.mobile-1.4.5.min.js"></script>
<script src="lib/ionic/js/ionic.bundle.js"></script>
&#13;
但离子和jquery移动似乎并没有合作,因为他们都有自己的方式来浏览应用程序。
是否有人遇到类似问题?
jquery真的是我的问题的答案,还是我在那里做错了?
window.location还有另一种解决方法,即在Windows平台上运行吗?
提前致谢!
答案 0 :(得分:1)
您没有进行真正的重定向,只是更改了窗口的源位置。这可能会导致某些事件无法触发,导致手机上的webview未注意到更改。
最佳做法是使用$state.go
方法。
假设您已定义以下状态:
.state('app', {
url: '/app',
abstract: true,
templateUrl: 'templates/menu.html',
controller: 'AppCtrl'
})
.state('app.loading', {
url: '/loading',
views: {
'menuContent': {
templateUrl: 'templates/loading.html',
controller: 'LoadingCtrl'
}
}
})
.state('app.stages', {
url: '/stages',
views: {
'menuContent': {
templateUrl: 'templates/stages.html',
controller: 'StagesCtrl'
}
}
})
然后$state.go('app.stages');
会让您的应用转到templates/stages.html
页面。