如果有/#/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
答案 0 :(得分:2)
我不认为默认是可能的。但是,您可以自己创建一个函数,用于跟踪当前变量并在需要更改其中一个变量时调用它们并调用$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服务中。