让AngularJS页面兼任搜索结果页面
Make AngularJS page double as search results page
我有一个基本的表,我通过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参数。
就像评论说的,这与filter
无关。它更多的是关于如何组织代码来定制发送到服务器的URL路径。你可以试着这样做:
function EventsController($scope, $http) {
// this field is bound to ng-model="search" in your HTML
$scope.search = 'ALL';
$scope.fetchResults = function() {
var path;
if ($scope.search === 'ALL') {
path = '/api/all-events';
} else {
path = '/search?input=' + $scope.search;
}
// here we send different URL path
// depending on the condition of $scope.search
$http.get(path).success(function(events) {
$scope.events = events;
});
};
// this line will be called once when controller is initialized
$scope.fetchResults();
}
在你的HTML代码中,确保你的控制器位于输入字段和搜索按钮的父div上。对于搜索按钮,点击时调用fetchResults()
:
<div ng-controller="eventsController")>
<input ng-model="search" id="search" type="text" placeholder="Search" value="">
<button ng-click="fetchResults()">Search</button>
<div>
<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>
</div>
相关文章:
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- 在web应用程序中的新搜索中重新加载搜索结果(不带jQuery)
- 检查搜索结果是否存在多次如果是,则在Javascript中只显示一个结果
- 显示可链接的搜索结果+对齐方式
- 谷歌位置服务附近搜索结果基于正确的地图中心的位置
- 为自定义网站创建JavaScript搜索框,创建显示搜索结果的弹出窗口
- 主干,如何记住搜索结果
- 为什么不'我的扩展程序不会出现在Chrome网上商店的搜索结果中
- 如何从谷歌自定义搜索下载搜索结果
- (临时)在Web应用程序中存储JSON搜索结果
- Angular JS根据搜索结果和点击事件更新DOM元素
- 停止 jQuery 自动完成以过滤/搜索结果并填充整个源数组数据
- 使用 jQuery UI 折叠面板显示 couchDB 数据库搜索结果时出现问题
- 清除网格中的存储和加载搜索结果
- angularjs不显示动态搜索结果的分页
- AngularJS正在过滤搜索结果:Error: [ng:areq]
- 如何用AngularJS切换搜索结果显示
- 让AngularJS页面兼任搜索结果页面
- 需要帮助来延迟angularjs中的搜索结果
- 当使用AngularJS单击搜索结果时,将输入重置为初始值