我正在开发一个网络应用,在您浏览网站时参数会传递给视图。这些参数由用户过滤器设置。
我遇到了一个问题,即某些视图不支持其中一个过滤器的特定值,如果发生这种情况,则需要将参数重置为两种可能中的一种。
我一直在使用$location.search({ type: "blue" })
,但我已经意识到,如果视图中的url /中有其他参数,那么这些参数将被替换为仅使用该代码设置的参数。
基本上,对于某些观看,如果type
参数为all
,则需要更改为blue
,而其他观看则需要更改为red
。
不幸的是,此参数是由应用的当前过滤器在链接中设置的,因此它不像更改href那么简单。
您可以在此示例中看到我正在尝试更改只能在设置red
的视图中设置为red
到blue
的视图(并且链接)使用路径数组。
for (let i = 0; i < redOnlyViews.length; i++) {
if (newUrl.indexOf(redOnlyViews[i]) > -1 && type === "blue") {
$location.path("/" + redOnlyViews[i]).search({type: "red"});
}
}
(这是在$rootScope.$on("$locationChangeStart", function (event, newUrl, oldUrl)
函数内)
如果有一种改变这样的参数的方法,同时不改变任何其他很棒的参数!
希望这有意义并且谢谢:)
为了匿名而改变了颜色,我没有生气:)
答案 0 :(得分:2)
如果要设置单个搜索参数,可以执行
$location.search(angular.extend($location.search(), {type: 'red'}))
答案 1 :(得分:0)
理想情况下,对于这种情况,$routeParams
用于提取在网址中输入的动态参数。
它的工作原理如下:
在HTML页面中,形成URL的Anchor标记会将动态参数添加到URL中,如下所示:
此处{{ }}
负责将{{yourModelName.yourModelAttributeKeyName}}
的值添加到网址
$routeProvider
配置中,在.when()
方法中,URL的路径参数必须像这种情况一样设置:`myApp.config(function($ routeProvider){ $ routeProvider
.when('/showColor/:yourModelAttributeValue', {
templateUrl : 'showColor.html'
});
});`
您可以继续添加以下参数:
然后还相应地更新.when()
方法:
.when('/showColor/:yourModelAttributeValue/:yourModelAttributeAnotherValue', {
templateUrl : 'showAnotherColor.html'
});
最后在控制器中,您可以提取:pathParams
之类的内容:
$ scope.firstColor = $ routeParams.yourModelAttributeValue;
$ scope.secondColor = $ routeParams.yourModelAttributeAnotherValue;