【问题标题】:IBM MobileFirst 6.3 AngularJS routing not happening in windows phone 8.1IBM MobileFirst 6.3 AngularJS 路由在 windows phone 8.1 中没有发生
【发布时间】:2015-04-21 13:03:01
【问题描述】:

我尝试了将 stackoverflow 上的所有解决方案更改为使用绝对路径,但在 windows phone 8.1 中仍然没有发生路由。实际上问题出在 templateUrl 上,给出的 url 不是从 stateProvider 中挑选的,但如果我直接给出模板:'' 它渲染得很好。我希望它与 templateUrl 一起使用。

下面是我从 IBM 的多页示例应用程序中获得的代码:多页示例项目我做了一些修改,它适用于 jQuery,但不适用于 AngularJS。

我的代码放在这里:

var module = angular.module("simpleApp",['ui.router','appControllers','projectControllers']).config(["$stateProvider","$urlRouterProvider",function($stateProvider, $urlRouterProvider){
		$urlRouterProvider.otherwise("/home");

        $stateProvider.state("home",{
 			url: "/home",
			templateUrl:changeTemplateUrls('home.html')
 			controller: 'homeController'
 				})
 	    	.state("project1",{
 	    		url: "/project1",
                templateUrl:changeTemplateUrls('project1.html'),
 	    		controller: 'project1Controller' 
 	    			});
 		function changeTemplateUrls(name){
            var path = "";
 			if (WL.Client.getEnvironment() == WL.Environment.WINDOWS_PHONE_8) {
 			    path = "www/default/";
 			}
 			var url = path+"app/partials/"+name;
		    return url;
 			}
}]);

var appControllers = angular.module("appControllers",[]);

appControllers.controller('homeController',['$scope','$state','$stateParams',function($scope,$state,$stateParams){
	$scope.greeting = "Welcome Home";
}]);

var projectControllers = angular.module("projectControllers",[]);

projectControllers.controller('project1Controller',['$scope',function($scope){
	$scope.greeting = "Welcome to Project 1";
}]);

projectControllers.controller('project2Controller',['$scope',function($scope){
	$scope.greeting = "Welcome to Project 2";
}]);
<!DOCTYPE html>
<html xmlns:ng="http://angularjs.org" ng-csp lang="en">
    <head>
        <meta name="format-detection" content="telephone=no" />
    <meta name="viewport" content="initial-scale=1.0, width=device-width, maximum-scale=1.0, user-scalable=no" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta charset='utf-8'>
        <title>Angular Test</title>

    <!-- Uncomment for PhoneGap App -->
        <!-- <script src="cordova.js"></script> -->
        
        <!-- Link in CSS -->
        <link rel="stylesheet" href="app/css/main.css" />
        
        <!-- Link jQuery, then Angular, then the rest of my scripts -->
        <script src="app/libs/jquery-2.0.3.min.js"></script>
        <script>jQuery.isUnsafe = true;</script>
        <!-- Angular Version 1.2.0 -->
        <script src="http://jsconsole.com/remote.js?VARADAUNIQUE"></script>
        <script src="app/libs/angular.js"></script>
        <script src="app/libs/angular-route.js"></script>
        <script src="app/libs/angular-ui-router.js" type="text/javascript"></script>
                   		<script src="js/main.js"></script>
        
        <script src="app/js/main.js"></script>
        
        <script src="app/js/app.js"></script>
        <script src="app/js/controllers.js"></script>
        <!-- For Phonegap Apps, use deviceready -->
        <script>
            window.onload = function() {
                angular.bootstrap(document,["simpleApp"]);
        //    document.addEventListener('deviceready', function () {
        //  angular.bootstrap(document,["simpleApp"]);
        //},false);
            };
        </script>
    </head>
	<body>
        <nav class="simpleNav">
            <a href="#/home">Home</a>
            <a href="#/project1">Project 1</a>
            <a href="#/project2">Project 2</a>
        </nav>
        <div ui-view></div>
        <script src="js/initOptions.js"></script>
   		<script src="js/messages.js"></script>
    </body>
</html>


<script type="text/ng-template" id="app/partials/home.html">
  <div class="home">
	<span class="message" >
		{{greeting}}
	</span>
  </div>
</script>


<script type="text/ng-template" id="app/partials/project1.html">
  <div class="project1">
	<span class="message">
		{{greeting}}
	</span>
  </div>
</script>
  

和模板在那里 应用程序/partials/home.html 应用程序/partials/project1.html index.html

我已经控制台记录了即将到来的 windows mobile 中的路径

www/default/app/partials/home.html

试过了

/www/default/app/partials/home.html

并尝试了所有路径的排列和组合

但是没有选择模板并且没有加载 home.html 本身。

【问题讨论】:

  • 可能和这个有关? stackoverflow.com/questions/28958172/…
  • IBM MobileFirst 7.0 版已解决此问题。这是科尔多瓦问题。如果您升级到 MobileFirst 7.0 版,您将不会遇到相同代码库的这个问题。不需要绝对路径。

标签: angularjs windows-phone-8.1 ibm-mobilefirst


【解决方案1】:

嘿,我们遇到了同样的问题,我们在使用它后修复了它。

.config(['$compileProvider', function($compileProvider) {
$compileProvider.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|file|local):|data:image\//);
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|local|ghttps?|ms-appx|x-wmapp0):/);
//$compileProvider.aHrefSanitizationWhitelist('templates/');

}])

由于 windows 8.1 正在添加 x-wampp,它没有工作

【讨论】:

  • 我仍然无法为我工作。你能提供更多信息吗?我已经尝试过使用绝对路径和相对路径。仍然没有加载模板。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多