ตกลงแก้ไขแล้ว :) Angular UI Router มีวิธีการใหม่นี้ $ urlRouterProvider.deferIntercept ()
https://github.com/angular-ui/ui-router/issues/64
โดยพื้นฐานแล้วมันลงมาดังนี้:
angular.module('myApp', [ui.router])
.config(['$urlRouterProvider', function ($urlRouterProvider) {
$urlRouterProvider.deferIntercept();
}])
.run(['$rootScope', '$urlRouter', '$location', '$state', function ($rootScope, $urlRouter, $location, $state) {
$rootScope.$on('$locationChangeSuccess', function(e, newUrl, oldUrl) {
e.preventDefault();
if ($state.current.name !== 'main.exampleState' || newUrl === 'http://some.url' || oldUrl !=='https://another.url') {
$urlRouter.sync();
} else {
}
});
$urlRouter.listen();
}]);
ฉันคิดว่าวิธีนี้รวมอยู่ในเราเตอร์ ui เชิงมุมเวอร์ชันหลักเท่านั้นซึ่งเป็นวิธีที่มีพารามิเตอร์เสริม (ซึ่งก็ดีเช่นกัน btw) จำเป็นต้องโคลนและสร้างจากแหล่งที่มาด้วย
grunt build
สามารถเข้าถึงเอกสารได้จากแหล่งที่มาเช่นกันผ่าน
grunt ngdocs
(สร้างไว้ในไดเร็กทอรี / site) // ข้อมูลเพิ่มเติมใน README.MD
ดูเหมือนจะมีวิธีอื่นในการทำเช่นนี้โดยพารามิเตอร์แบบไดนามิก (ซึ่งฉันไม่ได้ใช้) เครดิตมากมายสำหรับ nateabele
ในฐานะ sidenote นี่คือพารามิเตอร์เสริมใน $ stateProvider ของ Angular UI Router ซึ่งฉันใช้ร่วมกับข้างต้น:
angular.module('myApp').config(['$stateProvider', function ($stateProvider) {
$stateProvider
.state('main.doorsList', {
url: 'doors',
controller: DoorsListCtrl,
resolve: DoorsListCtrl.resolve,
templateUrl: '/modules/doors/doors-list.html'
})
.state('main.doorsSingle', {
url: 'doors/:doorsSingle/:doorsDetail',
params: {
doorsSingle: {value: null},
doorsDetail: {value: null}
},
controller: DoorsSingleCtrl,
resolve: DoorsSingleCtrl.resolve,
templateUrl: '/modules/doors/doors-single.html'
});
}]);
มันช่วยให้แก้ไขสถานะได้อย่างไรแม้ว่าพารามิเตอร์ตัวใดตัวหนึ่งจะหายไป SEO เป็นจุดประสงค์หนึ่งที่สามารถอ่านได้อีกอย่างหนึ่ง
ในตัวอย่างด้านบนฉันต้องการให้ doorsSingle เป็นพารามิเตอร์ที่จำเป็น ยังไม่ชัดเจนว่าจะกำหนดอย่างไร แม้ว่าจะใช้งานได้กับพารามิเตอร์ทางเลือกหลายตัวดังนั้นจึงไม่เป็นปัญหาจริงๆ การสนทนาอยู่ที่นี่https://github.com/angular-ui/ui-router/pull/1032#issuecomment-49196090