【发布时间】:2014-08-18 21:26:44
【问题描述】:
我有一个基本表,我在其中显示通过 AngularJS 从数据库中提取的数据。我还有一个使用 AngularJS 过滤数据的搜索字段:
<input ng-model="search" id="search" type="text" placeholder="Search" value="">
<div ng-controller="eventsController")>
<table>
<tr ng-repeat="event in events | filter:search">
<td><span ng-bind="event.title"></span></td>
<td><span ng-bind="event.date_start"></span></td>
</tr>
</table>
</div>
<script>
function EventsController($scope, $http) {
$http.get('/api/all-events').success(function(events) {
$scope.events = events;
});
}
</script>
这对于用户定义的搜索非常有用,但是如果我想在页面加载时运行特定的过滤器同时保持搜索功能怎么办?有没有一种方法可以使用 AngularJS 根据 URL 参数(即 example.com?search=foo)自动过滤结果?理想情况下,输入字段的值也应设置为 URL 参数。
【问题讨论】:
-
这个问题和过滤无关。您要问的只是如何获取
$routeParams(docs.angularjs.org/api/ngRoute/service/$routeParams) 或查询字符串 (stackoverflow.com/questions/16964444/…)。检查search后,只需将$scope.search设置为该值,一切都应该到位 -
我认为您需要将
$location添加到您的控制器。EventsController($scope, $http, $location)$location 服务解析浏览器地址栏中的 URL。然后使用$location.search()。
标签: javascript angularjs search filter pageload