【问题标题】:WindowsPhone 8 (phonegap) and AngularJs - $routeProvider not working?WindowsPhone 8 (phonegap) 和 AngularJs - $routeProvider 不工作?
【发布时间】:2014-04-29 07:21:23
【问题描述】:

我的心已经不在了。我不知道我的代码有什么问题。

嗯,我会解释的。

文件详情:

科尔多瓦 2.9.1 版本

angularjs 1.2.13 版本(也使用了最新(1.2.16)版本的所有版本)

我使用过 Windows Phone 8 应用程序

这是我的代码

App.js

'use strict';
window.myApp = angular.module('myApp', ['ajoslin.mobile-navigate', 'ngMobile',
    'myApp.Registermdl',
   'myApp.login', 'myApp.CreateUsermdl', 'myApp.viewMap', 'myApp.createMap',
'myApp.logout', 'ngProgress', 'ngCookies','ngRoute'])


myApp.config(function ($routeProvider, $compileProvider) {

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

    $routeProvider.when('/', { templateUrl: 'index.html', controller: 'IndexCtrl' });
    $routeProvider.when('/login', { templateUrl: 'app/login/login.html', controller: 'LoginCtrl' });
    $routeProvider.when('/home', { templateUrl: 'app/home/home.htm', controller: 'HomeCtrl' });
    $routeProvider.when('/createuser', { templateUrl: 'app/CreateUser/createUser.html', controller: 'CreateUserCtrl' });
    $routeProvider.when('/signup', { templateUrl: 'app/register/register.html', controller: 'RegisterCtrl' });
    $routeProvider.when('/logout', { templateUrl: 'app/login/login.html', controller: 'LogoutCtrl' });
    $routeProvider.when('/view-map', { templateUrl: 'app/ViewMap/viewmap.html', controller: 'ViewMapCtrl' });
    $routeProvider.when('/create-map', { templateUrl: 'app/CreateMapAddress/create-mapaddress.html', controller: 'CreateMapAddressCtrl' });
    $routeProvider.otherwise({ redirectTo: '/' });
});

myApp.controller('IndexCtrl', ['$rootScope', '$scope', '$location', '$route', '$cookieStore', '$cookies',
    function ($rootScope, $scope, $location, $route, $cookieStore, $cookies) {
        if ($cookieStore.get('userEmail') == undefined) {
            $rootScope.IsLogin = false;
            $rootScope.IsLogout = true;
            $rootScope.IsAdmin = false;
            $rootScope.userName = "";
            $scope.$apply();
            if ($location.$$path == "/signup") {
                $location.$$path = "/signup";
                $route.reload();
                return false;
            }
            $location.$$path = "/login";
            $route.reload();
            alert("goos Start5");
            return false;
        }
        $rootScope.IsAdmin = false;
        if ($cookieStore.get('userRole') == "Admin") {
            $rootScope.IsAdmin = true;
        }
        $rootScope.IsLogin = true;
        $rootScope.IsLogout = false;
        $rootScope.userName = $cookieStore.get('userEmail');
        $route.reload();

    }]);
//var hostname = 'qbsnewsvr/CollegeApp';
var hostname = 'localhost:54938/';
var rootUrl = 'http://' + hostname;

和索引页(主页)

<!DOCTYPE html>
<html xmlns:ng="http://angularjs.org" lang="en" ng-app="myApp">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <!-- Use the .min version of bootstrap files in production -->
    <!-- Use the following if you want to use responsive design -->
    <link rel="stylesheet" type="text/css" href="dist/css/bootstrap-custom.css">
    <link rel="stylesheet" type="text/css" href="dist/css/toastr.min.css">
    <!-- Custom styles for this template -->
    <link rel="stylesheet" type="text/css" href="assets/css/style.css">
    <!-- Just for debugging purposes. Don't actually copy this line! -->
    <!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->

    <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
      <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->

    <!-- Scripts begins-->

    <script src="assets/js/jquery.min.js"></script>
    <script src="dist/js/bootstrap.js"></script>
    <script src="assets/js/offcanvas.js"></script>
    <link href="css/MSDList.css" rel="stylesheet" />
</head>

<body>
    <!-- The following tag is in place of ng-view to use the angular mobile view navigation framework
            https://github.com/ajoslin/angular-mobile-nav
        -->
    <div class="navbar navbar-default navbar-fixed-top" role="navigation" ng-controller="IndexCtrl">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a class="navbar-brand" href="#">College App</a>
            </div>
            <div class="navbar-collapse collapse">
                <ul class="nav navbar-nav">
                    <li class="active"><a href="#/home">Home</a></li>
                    <li><a href="#/home">Contact</a></li>
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
                        <ul class="dropdown-menu">
                            <li>
                                <form class="navbar-form" role="search">
                                    <div class="input-group">
                                        <input type="text" class="form-control input-sm" placeholder="Search" name="srch-term" id="srch-term">
                                        <div class="input-group-btn">
                                            <button class="btn btn-default btn-sm" type="submit"><i class="glyphicon glyphicon-search"></i></button>
                                        </div>
                                    </div>
                                </form>
                            </li>
                            <li class="divider"></li>
                            <li class="dropdown-header">Nav header</li>
                            <li><a href="#/home">Separated link</a></li>
                            <li><a href="#/home">One more separated link</a></li>
                        </ul>
                    </li>
                </ul>
                <div ng-show="IsLogin">
                    <p class="navbar-text welocome-aliginment">Welcome <a href="#" class="wecome-text" id="welcomeName">{{userName}}</a></p>
                </div>
                <ul class="nav navbar-nav navbar-right">
                    <li><a href="#/login" ng-show="IsLogout">Login</a></li>
                    <li><a href="#/signup" ng-show="IsLogout">SignUp</a></li>
                    <li><a href="#/createuser" ng-show="IsLogin && IsAdmin">Create New User</a></li>
                    <li class="active" ng-show="IsLogin"><a href="#/view-map">View Map</a></li>
                    <!-- <li class="active" ng-show="IsLogin"><a href="#/create-map">Create Map</a></li>-->
                    <li class="active" ng-show="IsLogin"><a href="#/logout">Logout</a></li>
                </ul>
            </div>
            <!--/.nav-collapse -->
        </div>
    </div>
    <div class="container" ng-view></div>
    <!-- Comment out the following 2 lines to test on the browser-->
    <script type="text/javascript" src="cordova.js"></script>

    <!-- In production use min versions -->
    <script src="js/q.js"></script>
    <script src="lib/angular/jx.min.js"></script>
    <script src="lib/angular/angular.js"></script>
    <script src="lib/angular/angular-route.js"></script>
    <script src="lib/angular/angular-mobile.js"></script>
    <script src="lib/angular/mobile-nav.js"></script>
    <script src="lib/angular/angular-cookies.min.js"></script>
    <script type="text/javascript" src="js/index.js"></script>
    <!-- 3rd party libraries -->
    <script src="js/toastr.min.js"></script>
    <script src="lib/ngProgress/ngProgress.min.js"></script>
    <script src="lib/MSDList.js"></script>

    <!-- app js -->
    <!-- <script src="http://maps.google.com/maps?file=api&v=3&key=AIzaSyBbd_4N1j8WIoRJ0trcrqGLlo0a6T_e-bA"></script>-->
    <!-- <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&amp;ver=3.5.1"></script>-->

    <!-- <script src="lib/Clusterer2.js"></script>-->
    <!-- controller  -->
    <script src="js/app.js"></script>
    <script src="app/home/home.js"></script>
    <script src="app/register/register.js"></script>
    <script src="app/CreateUser/createUser.js"></script>
    <script src="app/login/login.js"></script>
    <script src="app/ViewMap/viewmap.js"></script>
    <script src="app/Login/logout.js"></script>
    <script src="app/CreateMapAddress/create-mapaddress.js"></script>
    <!-- logger -->
    <script src="js/logger.js"></script>
    <script type="text/javascript">
        app.initialize();
    </script>
</body>
</html>

我的代码在所有浏览器上运行良好。但只是不能在模拟器中工作。我已经尝试了很多方法。

我从堆栈溢出中得到了一些答案

有config这行

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

但我已经这样做了。一切正常。但是$routeProvider 在模拟器中不起作用。(这意味着页面不会重定向到索引页面)。

我不知道。是版本问题或者任何冲突问题等等……

请任何人帮助我

【问题讨论】:

  • 您在运行应用时在模拟器上看到了什么?
  • @HardikThakkar 一个空白屏幕,如果我点击任何菜单(如登录),它并没有消失那个屏幕。
  • @HardikThakkar 并且同样的代码正在另一个应用程序中工作。我还检查每一行和每个文件。但没有运气
  • “同样的代码在另一个应用程序中运行” -> 这是另一个应用程序在 Windows 手机上运行良好吗?必须在 IE 上测试吗?
  • ajoslin.mobile-navigate 不完全支持 IE/Windows Mobile。您需要修改它的 CSS 以支持 IE。如果你想试一试,我有一份。在 js 中也有一些小的 tweeking 来使这个模块在 windows phone 浏览器上工作。

标签: javascript angularjs cordova windows-phone-8 windows-phone-8-emulator


【解决方案1】:

要修复窗口移动应用的 angularjs 路由,请为 unsafe:ms-appx:// 添加“ms-appx”。

$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|file|ms-appx):/)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    相关资源
    最近更新 更多