詳解AngularJS1.6版本中ui-router路由中/#!/的解決方法
AngularJS 路由 是通過 # + 標(biāo)記 幫助我們區(qū)分不同的邏輯頁面并將不同的頁面綁定到對(duì)應(yīng)的控制器上。因此在設(shè)置好路由規(guī)則后,為html頁面的a標(biāo)簽設(shè)置href路由鏈接切換不同的視圖。Angular1.6版本之前通常有href=“#...”或href=“#/...”這兩種寫法,結(jié)果這兩種寫法在Angular1.6中沒有任何反應(yīng)。
結(jié)果查看了下瀏覽器地址欄,默認(rèn)視圖鏈接竟然顯示“#!/..”,是的,中間多加了個(gè)!號(hào)。
AngularJS升級(jí)到了1.6版本后,里面多了很多/#!/的改動(dòng)。那么1.6究竟做了哪些改變呢?可以參考這個(gè):https://github.com/angular/angular.js/commit/aa077e81129c740041438688dff2e8d20c3d7b52
解決方案一:
所以在html頁面a標(biāo)簽上將href的屬性值添加一個(gè)!號(hào)就可以了。
<p><a href="#!/addStudent" rel="external nofollow" rel="external nofollow" >添加學(xué)生</a></p> <p><a href="#!/viewStudents" rel="external nofollow" rel="external nofollow" >查看學(xué)生</a></p>
完整代碼:
<html> <head> <meta charset="utf-8" /> <title>AngularJS 視圖</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular-route.min.js"></script> </head> <body> <h2>AngularJS 視圖</h2> <div ng-app="mainApp"> <p><a href="#!/addStudent" rel="external nofollow" rel="external nofollow" >添加學(xué)生</a></p> <p><a href="#!/viewStudents" rel="external nofollow" rel="external nofollow" >查看學(xué)生</a></p> <div ng-view></div> <script type="text/ng-template" id="addStudent.html"> <h2>添加學(xué)生</h2> {{message}} </script> <script type="text/ng-template" id="viewStudents.html"> <h2>查看學(xué)生</h2> {{message}} </script> </div> <script> var mainApp=angular.module("mainApp",['ngRoute']); mainApp.config(["$routeProvider",function($routeProvider){ $routeProvider.when('/addStudent',{ templateUrl:'addStudent.html', controller:'AddStudentController' }).when('/viewStudents',{ templateUrl:'viewStudents.html', controller:'ViewStudentsController' }).otherwise({ redirectTo:'/addStudent' }); }]); mainApp.controller("AddStudentController",function($scope){ $scope.message="這個(gè)頁面是用于顯示學(xué)生信息的輸入表單"; }); mainApp.controller("ViewStudentsController",function($scope){ $scope.message="這個(gè)頁面是用于顯示所有學(xué)生信息"; }); </script> </body> </html>
解決方案二:
如果想讓路由依舊表現(xiàn)的與之前版本的一致可以這樣做:
mainApp.config(["$locationProvider","$routeProvider",function($locationProvider,$routeProvider){ $locationProvider.hashPrefix(''); }]);
<p><a href="#addStudent" rel="external nofollow" rel="external nofollow" >添加學(xué)生</a></p> <p><a href="#viewStudents" rel="external nofollow" rel="external nofollow" >查看學(xué)生</a></p>
完整代碼:
<html> <head> <meta charset="utf-8" /> <title>AngularJS 視圖</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular-route.min.js"></script> </head> <body> <h2>AngularJS 視圖</h2> <div ng-app="mainApp"> <p><a href="#addStudent" rel="external nofollow" rel="external nofollow" >添加學(xué)生</a></p> <p><a href="#viewStudents" rel="external nofollow" rel="external nofollow" >查看學(xué)生</a></p> <div ng-view></div> <script type="text/ng-template" id="addStudent.html"> <h2>添加學(xué)生</h2> {{message}} </script> <script type="text/ng-template" id="viewStudents.html"> <h2>查看學(xué)生</h2> {{message}} </script> </div> <script> var mainApp=angular.module("mainApp",['ngRoute']); mainApp.config(["$locationProvider","$routeProvider",function($locationProvider,$routeProvider){ $locationProvider.hashPrefix(''); $routeProvider.when('/addStudent',{ templateUrl:'addStudent.html', controller:'AddStudentController' }).when('/viewStudents',{ templateUrl:'viewStudents.html', controller:'ViewStudentsController' }).otherwise({ redirectTo:'/addStudent' }); }]); mainApp.controller("AddStudentController",function($scope){ $scope.message="這個(gè)頁面是用于顯示學(xué)生信息的輸入表單"; }); mainApp.controller("ViewStudentsController",function($scope){ $scope.message="這個(gè)頁面是用于顯示所有學(xué)生信息"; }); </script> </body> </html>
這樣瀏覽器訪問時(shí),就不會(huì)多出個(gè)!號(hào)了。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Angularjs實(shí)現(xiàn)控制器之間通信方式實(shí)例總結(jié)
這篇文章主要介紹了Angularjs實(shí)現(xiàn)控制器之間通信方式,結(jié)合實(shí)例形式總結(jié)分析了AngularJS控制器常用通信方式及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-03-03AngularJS實(shí)現(xiàn)的select二級(jí)聯(lián)動(dòng)下拉菜單功能示例
這篇文章主要介紹了AngularJS實(shí)現(xiàn)的select二級(jí)聯(lián)動(dòng)下拉菜單功能,結(jié)合完整實(shí)例形式分析了AngularJS實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)菜單的具體操作步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-10-10AngularJs Understanding Angular Templates
本文主要介紹AngularJs Understanding Angular Templates的資料,這里整理了詳細(xì)的資料及簡單示例代碼,有興趣的小伙伴的參考下2016-09-09angularjs封裝bootstrap時(shí)間插件datetimepicker
這篇文章主要介紹了angularjs封裝bootstrap時(shí)間插件datetimepicker 的相關(guān)資料,需要的朋友可以參考下2016-06-06詳解angularJS+Ionic移動(dòng)端圖片上傳的解決辦法
本篇文章主要介紹了詳解angularJS+Ionic移動(dòng)端圖片上傳的解決辦法 ,具有一定的參考價(jià)值,有需要的可以了解一下2017-09-09AngularJs html compiler詳解及示例代碼
本文主要介紹AngularJs html compiler的知識(shí)講解,這里整理了相關(guān)資料及相關(guān)示例代碼,有興趣的小伙伴可以參考下2016-09-09