我正在制作一个angularJS应用程序,它使用ng-repeat和过滤器组合作为一种简单类型的控制器。我这样做是为了让用户可以搜索并点击他们在网站上的方式。
我的侧栏导航看起来像这样:
<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会导致过滤器进入其先前的状态?
答案 0 :(得分:0)
如果要支持浏览器按钮,最好在查询字符串参数中添加过滤器。然后使用$routeParams
提取要应用的过滤器。使用这些routeParams在控制器中设置searchFilter
和navFilter
。
这会导致视图重新加载,但可以通过设置$routeProvider
reloadOnSearch=false
来解决此问题。请参阅文档here