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

时间:2013-09-15 04:07:25

标签: javascript jquery angularjs router

我正在制作一个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会导致过滤器进入其先前的状态?

1 个答案:

答案 0 :(得分:0)

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

这会导致视图重新加载,但可以通过设置$routeProvider reloadOnSearch=false来解决此问题。请参阅文档here