我有以下各种状态配置:
(function(angular) {
'use strict';
angular.module('myModule')
.config(function($stateProvider, 'root', 'place-locator') {
var placeLocatorConfig = {
url: '/place-locator/{param1}/{param2}?qp1&qp2',
parent: 'root',
params: {
param1: {
value: null,
squash: true
},
param2: {
value: null,
squash: true
}
},
views: {
main: {
templateUrl: 'app/placeLocator/placeLocator.tpl.html',
controller: 'PlaceLocatorController as vm',
bindings: {
places: '='
}
}
}
};
$stateProvider
.state('place-locator', placeLocatorConfig);
});
})(angular);
每当我尝试 $state.transitionTo
一个子状态时,只要URL中的QueryParams是在StateConfig中注册的那些(即 qp1
或 qp2
),一切正常 .
但是,只要URL包含未在配置中注册的queryParam(例如 qp3
),它就会在 $state.transitionTo
上被删除
现在,我不确定这些QueryParams的名称是什么 . 但是在 $state.transitionTo
之后我仍然需要它们在URL中 .
如何在不将它们注册为StateConfig的情况下实现此目的?
我看了下面的问题:
Adding query string to UI router route
Angular UI Router - allow ANY query string parameter
Query string parameter in ui-router urls?
但它们都不像我的情况 .
在这种情况下我也尝试了解决方案:
AngularJS UI-Router navigate without removing query params
但这没有用 . 未注册的QueryParams仍然被剥夺 .