是否可以使用 $route 在 AngularJS 中指定过滤器的内容

Is it possible use $route to specify the contents of a filter in AngularJS?

本文关键字:过滤器 AngularJS 可以使 route 是否      更新时间:2023-09-26

我正在制作一个使用ng-repeat和过滤器组合作为简单类型的控制器的angularJS应用程序。我这样做是为了让用户可以搜索和点击网站。

我的侧边栏导航如下所示:

<li><a ng-click="navFilter = {type: 'section1'}" >Section 1</a></li>
<li><a ng-click="navFilter = {type: 'section2'}" >Section 2</a></li>
<li><a ng-click="navFilter = {type: 'section3'}" >Section 3</a></li>

这也适用于搜索过滤器:

<input ng-click="Filter = null" type="text" ng-model="searchFilter">

当用户单击搜索框时,"过滤器"由侧边栏导航触发的过滤器设置为 null,用户可以搜索网站的所有内容。

<div ng-repeat="item in items | filter:navFilter | filter:searchFilter">
    <div>{{item.title}}</div>
    <div>{{item.body}}</div>
</div>

我担心当用户点击后退按钮时会发生什么。是否有一种"角度"方法来配置路由器,以便在用户回击时,URL 会导致过滤器进入其先前状态?

如果要支持浏览器按钮,最好在查询字符串参数中添加筛选器。然后使用$routeParams提取要应用的筛选器。使用这些路由参数在控制器中设置searchFilternavFilter

这会导致视图重新加载,但这可以通过设置 $routeProvider reloadOnSearch=false 来修复。请参阅此处的文档