0

我正在制作一个使用 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">

当用户点击搜索框时,“过滤器”将侧边栏导航触发的过滤器设置为空,用户可以搜索网站的所有内容。

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

我担心当用户点击后退按钮时会发生什么。是否有一种“Angular”方式来配置路由器,这样当用户回击时,URL 会导致过滤器进入之前的状态?

4

1 回答 1

0

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

这会导致视图重新加载,但这可以通过设置来解决$routeProvider reloadOnSearch=false在此处查看文档

于 2013-09-15T07:43:15.340 回答