AngularJS - 搜索标签
你好,有抱负的程序员们!今天,我们将深入AngularJS的精彩世界,学习如何创建一个搜索标签。作为你友好的邻居计算机老师,我将在这一旅程中一步步引导你。所以,拿起一杯咖啡(或者你最喜欢的饮料),让我们开始吧!
AngularJS 搜索标签简介
在我们跳入代码之前,让我们先了解一下搜索标签是什么以及它为什么有用。想象你正在构建一个包含大量数据网站,比如图书馆目录或在线商店。搜索标签允许用户快速找到他们想要的内容,而不需要滚动无尽的页面。这就像拥有一个超级聪明的助手,可以立即获取你需要的所有信息!
设置我们的项目
首先,我们需要设置我们的项目。别担心如果你之前从未做过——我会一步步带你完成!
第一步:包含AngularJS库
要使用AngularJS,我们需要在我们的HTML文件中包含它的库。在HTML的<head>
部分添加以下行:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
这行代码就像邀请AngularJS来参加我们的编码派对。它让我们可以使用所有酷炫的功能。
第二步:创建HTML结构
现在,让我们创建搜索标签的基本结构。它看起来是这样的:
<div ng-app="searchApp" ng-controller="searchCtrl">
<input type="text" ng-model="searchText" placeholder="搜索...">
<ul>
<li ng-repeat="item in items | filter:searchText">{{item}}</li>
</ul>
</div>
让我们分解一下:
-
ng-app="searchApp"
:这告诉AngularJS这个div是我们的应用程序。 -
ng-controller="searchCtrl"
:这把我们的HTML连接到一个我们即将创建的控制器。 -
ng-model="searchText"
:这将输入字段绑定到一个名为searchText
的变量。 -
ng-repeat="item in items | filter:searchText"
:这为items
数组中的每个元素创建一个列表项,通过searchText
进行过滤。
创建AngularJS控制器
现在我们有了HTML结构,让我们创建应用程序的大脑——控制器!
var app = angular.module('searchApp', []);
app.controller('searchCtrl', function($scope) {
$scope.items = ['苹果', '香蕉', '樱桃', '日期', '接骨木', '无花果', '葡萄'];
});
这里发生了什么:
- 我们创建了一个名为
searchApp
的AngularJS模块。 - 我们定义了一个名为
searchCtrl
的控制器。 - 在控制器内部,我们创建了一个我们想要搜索的项的数组。
它们是如何协同工作的
当你在搜索框中输入时,AngularJS会自动更新searchText
变量。ng-repeat
指令然后使用这个searchText
来过滤items
数组。这就像魔法,但实际上只是AngularJS在后台工作!
增强我们的搜索标签
现在我们有了基本的搜索功能,让我们添加一些额外的功能!
不区分大小写的搜索
为了使我们的搜索不区分大小写(这样"apple"可以匹配"Apple"),我们可以修改我们的过滤器:
<li ng-repeat="item in items | filter:searchText:ignoreCase">{{item}}</li>
自定义过滤函数
对于更复杂的过滤,我们可以创建一个自定义过滤函数:
app.controller('searchCtrl', function($scope) {
$scope.items = ['苹果', '香蕉', '樱桃', '日期', '接骨木', '无花果', '葡萄'];
$scope.customFilter = function(item) {
if (!$scope.searchText) return true;
return item.toLowerCase().indexOf($scope.searchText.toLowerCase()) !== -1;
};
});
然后在我们的HTML中:
<li ng-repeat="item in items | filter:customFilter">{{item}}</li>
这个自定义过滤器允许我们根据需要实现更复杂的搜索逻辑。
为我们的搜索标签添加样式
我们别忘了让我们的搜索标签看起来漂亮!这里有一些CSS来美化它:
<style>
.search-container {
max-width: 300px;
margin: 20px auto;
font-family: Arial, sans-serif;
}
input[type="text"] {
width: 100%;
padding: 10px;
margin-bottom: 10px;
border: 1px solid #ddd;
border-radius: 4px;
}
ul {
list-style-type: none;
padding: 0;
}
li {
padding: 8px;
background-color: #f1f1f1;
margin-bottom: 5px;
border-radius: 4px;
}
</style>
别忘了给你的主div添加search-container
类!
把所有东西放在一起
这是我们完整的HTML文件,包含了所有部分:
<!DOCTYPE html>
<html ng-app="searchApp">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
<style>
/* CSS样式在这里 */
</style>
</head>
<body ng-controller="searchCtrl">
<div class="search-container">
<input type="text" ng-model="searchText" placeholder="搜索...">
<ul>
<li ng-repeat="item in items | filter:customFilter">{{item}}</li>
</ul>
</div>
<script>
var app = angular.module('searchApp', []);
app.controller('searchCtrl', function($scope) {
$scope.items = ['苹果', '香蕉', '樱桃', '日期', '接骨木', '无花果', '葡萄'];
$scope.customFilter = function(item) {
if (!$scope.searchText) return true;
return item.toLowerCase().indexOf($scope.searchText.toLowerCase()) !== -1;
};
});
</script>
</body>
</html>
结论
恭喜你!你刚刚使用AngularJS构建了一个功能性的搜索标签。从设置项目到实现自定义过滤器并添加样式,你覆盖了很多内容。记住,熟能生巧,所以不要害怕尝试不同的数据集或为你的搜索标签添加更多功能。
下面是我们使用的主要AngularJS指令和概念的总结表:
指令/概念 | 目的 |
---|---|
ng-app | 定义AngularJS应用程序 |
ng-controller | 指定应用程序的控制器 |
ng-model | 将输入绑定到变量 |
ng-repeat | 迭代集合中的元素 |
filter | 基于条件过滤数组 |
自定义过滤函数 | 允许更复杂的过滤逻辑 |
继续编码,保持好奇心,祝搜索愉快!
Credits: Image by storyset