如果有 s 路径/#/var1/oneVariable/var2/many,more,variables/var3/last,set
并且我想更新 $location,有没有办法只更新路径的变量部分而不必重新声明当前路径中的所有内容?
这样的事情可能吗?:
$location.path(var2 = 'changed,all,three';)
结果是/#/var1/oneVariable/var2/changed,all,three/var3/last,set
如果有 s 路径/#/var1/oneVariable/var2/many,more,variables/var3/last,set
并且我想更新 $location,有没有办法只更新路径的变量部分而不必重新声明当前路径中的所有内容?
这样的事情可能吗?:
$location.path(var2 = 'changed,all,three';)
结果是/#/var1/oneVariable/var2/changed,all,three/var3/last,set
我认为默认情况下这是不可能的。但是,您可以自己创建一个函数来跟踪当前变量并在您需要更改其中一个变量并调用时为您填充它们$location.path()
。
var currentParams = {
var1: 'oneVariable',
var2: 'many,more,variables',
var3: 'last,set'
};
function changePath(params) {
angular.forEach(params, function (value, key) {
currentParams[key] = value;
});
$location.path('/var1/'+ currentParams.var1 + '/var2/' + currentParams.var2 + '/var3/' + currentParams.var3);
}
您现在可以使用changePath({var2: 'changed,all,three'})
. 请注意,这是一个简化的示例。你可以让它更灵活,最好把它放到一个 Angular 服务中。