ঠিক আছে, সমাধান করা হয়েছে: কৌণিক ইউআই রাউটারের এই নতুন পদ্ধতি রয়েছে, $ urlRouterProvider.deferIntercept ()
https://github.com/angular-ui/ui-router/issues/64
মূলত এটি এখানে আসে:
angular.module('myApp', [ui.router])
.config(['$urlRouterProvider', function ($urlRouterProvider) {
$urlRouterProvider.deferIntercept();
}])
// then define the interception
.run(['$rootScope', '$urlRouter', '$location', '$state', function ($rootScope, $urlRouter, $location, $state) {
$rootScope.$on('$locationChangeSuccess', function(e, newUrl, oldUrl) {
// Prevent $urlRouter's default handler from firing
e.preventDefault();
/**
* provide conditions on when to
* sync change in $location.path() with state reload.
* I use $location and $state as examples, but
* You can do any logic
* before syncing OR stop syncing all together.
*/
if ($state.current.name !== 'main.exampleState' || newUrl === 'http://some.url' || oldUrl !=='https://another.url') {
// your stuff
$urlRouter.sync();
} else {
// don't sync
}
});
// Configures $urlRouter's listener *after* your custom listener
$urlRouter.listen();
}]);
আমি মনে করি এই পদ্ধতিটি বর্তমানে কেবলমাত্র কৌনিক ইউআই রাউটারের মাস্টার সংস্করণে অন্তর্ভুক্ত রয়েছে, এটি alচ্ছিক পরামিতিগুলির সাথে রয়েছে (যা খুব সুন্দর, বিটিডাব্লু)। এটি উত্স থেকে ক্লোন করা এবং তৈরি করা প্রয়োজন
grunt build
দস্তাবেজগুলি উত্স থেকেও অ্যাক্সেসযোগ্য
grunt ngdocs
(এগুলি / সাইট ডিরেক্টরিতে নির্মিত হয়) // README.MD তে আরও তথ্য
গতিশীল পরামিতি (যা আমি ব্যবহার করি নি) দ্বারা এটি করার আরও একটি উপায় রয়েছে বলে মনে হয় । অনেক ক্রেডিট নটবেলে।
সিডনোট হিসাবে, এখানে কৌনিক ইউআই রাউটারের $ স্টেটপ্রোভাইডারটিতে alচ্ছিক পরামিতি রয়েছে, যা আমি উপরের সাথে সংমিশ্রণে ব্যবহার করেছি:
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: {
// as of today, it was unclear how to define a required parameter (more below)
doorsSingle: {value: null},
doorsDetail: {value: null}
},
controller: DoorsSingleCtrl,
resolve: DoorsSingleCtrl.resolve,
templateUrl: '/modules/doors/doors-single.html'
});
}]);
এটি কী করে তা প্যারামগুলির মধ্যে একটি অনুপস্থিত থাকলেও কোনও রাষ্ট্রের সমাধান করতে দেয়। এসইও একটি উদ্দেশ্য, পাঠযোগ্যতা অন্য।
উপরের উদাহরণে, আমি চেয়েছিলাম দরজা সিঙ্গেল একটি প্রয়োজনীয় প্যারামিটার হোক। সেগুলি কীভাবে সংজ্ঞায়িত করা যায় তা পরিষ্কার নয়। যদিও এটি একাধিক alচ্ছিক পরামিতিগুলির সাথে ঠিক আছে, তাই আসলে সমস্যা নয়। আলোচনাটি এখানে https://github.com/angular-ui/ui-router/pull/1032#issuecomment-49196090