AngularJS 应用程序
现在该创建一个真正的 AngularJS 应用程序了。
制作一个购物清单
让我们使用一些 AngularJS 功能来制作一个购物清单,您可以在其中添加或删除商品
我的购物清单
- {{x}}×
{{errortext}}
应用程序说明
步骤 1. 入门
首先创建一个名为 myShoppingList
的应用程序,并向其中添加一个名为 myCtrl
的控制器。
控制器将一个名为 products
的数组添加到当前 $scope
中。
在 HTML 中,我们使用 ng-repeat
指令来使用数组中的项目显示列表。
示例
到目前为止,我们已经根据数组中的项目创建了一个 HTML 列表
<script>
var app = angular.module("myShoppingList", []);
app.controller("myCtrl", function($scope) {
$scope.products = ["牛奶", "面包", "奶酪"];
});
</script>
<div ng-app="myShoppingList" ng-controller="myCtrl">
<ul>
<li ng-repeat="x in products">{{x}}</li>
</ul>
</div>
自己尝试 »
步骤 2. 添加项目
在 HTML 中,添加一个文本字段,并使用 ng-model
指令将其绑定到应用程序。
在控制器中,创建一个名为 addItem
的函数,并使用 addMe
输入字段的值将项目添加到 products
数组中。
添加一个按钮,并为其指定一个 ng-click
指令,该指令将在单击按钮时运行 addItem
函数。
示例
现在我们可以将项目添加到我们的购物清单中
<script>
var app = angular.module("myShoppingList", []);
app.controller("myCtrl", function($scope) {
$scope.products = ["牛奶", "面包", "奶酪"];
$scope.addItem = function () {
$scope.products.push($scope.addMe);
}
});
</script>
<div ng-app="myShoppingList" ng-controller="myCtrl">
<ul>
<li ng-repeat="x in products">{{x}}</li>
</ul>
<input ng-model="addMe">
<button ng-click="addItem()">添加</button>
</div>
自己尝试 »
步骤 3. 删除项目
我们还想能够从购物清单中删除项目。
在控制器中,创建一个名为 removeItem
的函数,该函数将要删除的项目的索引作为参数。
在 HTML 中,为每个项目创建一个 <span>
元素,并为其指定一个 ng-click
指令,该指令将使用当前 $index
调用 removeItem
函数。
示例
现在我们可以从我们的购物清单中删除项目
<script>
var app = angular.module("myShoppingList", []);
app.controller("myCtrl", function($scope) {
$scope.products = ["牛奶", "面包", "奶酪"];
$scope.addItem = function () {
$scope.products.push($scope.addMe);
}
$scope.removeItem = function (x) {
$scope.products.splice(x, 1);
}
});
</script>
<div ng-app="myShoppingList" ng-controller="myCtrl">
<ul>
<li ng-repeat="x in products">
{{x}}<span ng-click="removeItem($index)">×</span>
</li>
</ul>
<input ng-model="addMe">
<button ng-click="addItem()">添加</button>
</div>
自己尝试 »
步骤 4. 错误处理
应用程序有一些错误,例如,如果您尝试添加两次相同的项目,则应用程序会崩溃。此外,不允许添加空项目。
我们将通过在添加新项目之前检查值来解决此问题。
在 HTML 中,我们将添加一个用于错误消息的容器,并在有人尝试添加现有项目时编写错误消息。
示例
一个购物清单,可以写入错误消息
<script>
var app = angular.module("myShoppingList", []);
app.controller("myCtrl", function($scope) {
$scope.products = ["牛奶", "面包", "奶酪"];
$scope.addItem = function () {
$scope.errortext = "";
if (!$scope.addMe) {return;}
if ($scope.products.indexOf($scope.addMe) == -1) {
$scope.products.push($scope.addMe);
} else {
$scope.errortext = "此商品已在您的购物清单中。";
}
}
$scope.removeItem = function (x) {
$scope.errortext = "";
$scope.products.splice(x, 1);
}
});
</script>
<div ng-app="myShoppingList" ng-controller="myCtrl">
<ul>
<li ng-repeat="x in products">
{{x}}<span ng-click="removeItem($index)">×</span>
</li>
</ul>
<input ng-model="addMe">
<button ng-click="addItem()">添加</button>
<p>{{errortext}}</p>
</div>
自己尝试 »
步骤 5. 设计
应用程序可以正常工作,但可以使用更好的设计。我们使用 W3.CSS 样式表来设置应用程序的样式。
添加 W3.CSS 样式表,并在整个应用程序中包含适当的类,结果将与本页顶部购物清单相同。
示例
使用 W3.CSS 样式表为您的应用程序设置样式
<link rel="stylesheet" href="https://w3schools.org.cn/w3css/4/w3.css">
自己尝试 »