AngularJS - 搜索标签

你好,有抱负的程序员们!今天,我们将深入AngularJS的精彩世界,学习如何创建一个搜索标签。作为你友好的邻居计算机老师,我将在这一旅程中一步步引导你。所以,拿起一杯咖啡(或者你最喜欢的饮料),让我们开始吧!

AngularJS - Search Tab

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 = ['苹果', '香蕉', '樱桃', '日期', '接骨木', '无花果', '葡萄'];
});

这里发生了什么:

  1. 我们创建了一个名为searchApp的AngularJS模块。
  2. 我们定义了一个名为searchCtrl的控制器。
  3. 在控制器内部,我们创建了一个我们想要搜索的项的数组。

它们是如何协同工作的

当你在搜索框中输入时,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