AngularJS - 购物车应用
你好,有抱负的程序员们!今天,我们将开始一段激动人心的旅程,使用AngularJS创建一个购物车应用。作为你友好的计算机科学老师,我很高兴能引导你完成这个过程,即使你完全是个编程新手。所以,拿起一杯咖啡(或者你最喜欢的饮料),让我们一起开始吧!
AngularJS是什么?
在我们开始构建购物车应用之前,让我们花点时间了解一下AngularJS是什么。AngularJS是一个强大的JavaScript框架,它帮助我们创建动态的Web应用。它就像一把瑞士军刀,为Web开发者提供工具,让我们的生活更简单,代码更有组织。
设置我们的项目
步骤1:创建HTML结构
让我们从为购物车应用创建一个基本的HTML结构开始。如果你不熟悉HTML,不用担心;我会边走边解释每个部分。
<!DOCTYPE html>
<html ng-app="cartApp">
<head>
<title>我的购物车</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.8.2/angular.min.js"></script>
<script src="app.js"></script>
</head>
<body ng-controller="CartController">
<h1>我的购物车</h1>
<!-- 我们稍后在这里添加更多内容 -->
</body>
</html>
在这个HTML结构中,我们做了几件重要的事情:
- 我们使用CDN链接包含了AngularJS库。
- 我们链接了我们自己的JavaScript文件(
app.js
),我们接下来会创建它。 - 我们在
<html>
标签中添加了ng-app="cartApp"
,告诉AngularJS这是我们的应用的根元素。 - 我们在
<body>
标签中添加了ng-controller="CartController"
,我们将用它来管理购物车的逻辑。
步骤2:创建AngularJS应用
现在,让我们创建app.js
文件并设置我们的AngularJS应用:
var app = angular.module('cartApp', []);
app.controller('CartController', function($scope) {
$scope.items = [];
$scope.total = 0;
$scope.addItem = function(item) {
$scope.items.push(item);
$scope.calculateTotal();
};
$scope.removeItem = function(index) {
$scope.items.splice(index, 1);
$scope.calculateTotal();
};
$scope.calculateTotal = function() {
$scope.total = $scope.items.reduce(function(sum, item) {
return sum + item.price;
}, 0);
};
});
让我们分解一下:
- 我们创建了一个名为'cartApp'的AngularJS模块。
- 我们定义了一个名为'CartController'的控制器。
- 在控制器内部,我们设置了一个用于存储物品的空数组和一个总价值变量。
- 我们创建了添加物品、移除物品和计算总价的函数。
构建用户界面
步骤3:创建物品列表
让我们更新我们的HTML来显示购物车中的物品:
<body ng-controller="CartController">
<h1>我的购物车</h1>
<ul>
<li ng-repeat="item in items">
{{item.name}} - ${{item.price}}
<button ng-click="removeItem($index)">移除</button>
</li>
</ul>
<p>总计: ${{total}}</p>
</body>
在这里,我们使用了AngularJS指令:
-
ng-repeat
来循环我们的物品。 -
{{}}
用于数据绑定来显示物品属性。 -
ng-click
用于在按钮点击时调用我们的removeItem
函数。
步骤4:添加新物品
让我们添加一个表单,让用户可以添加新物品:
<form ng-submit="addItem(newItem)">
<input type="text" ng-model="newItem.name" placeholder="物品名称" required>
<input type="number" ng-model="newItem.price" placeholder="价格" required>
<button type="submit">添加到购物车</button>
</form>
这个表单使用了:
-
ng-submit
在表单提交时调用我们的addItem
函数。 -
ng-model
将输入值绑定到我们的newItem
对象。
增强应用
步骤5:添加物品数量
让我们修改我们的应用来处理物品数量:
app.controller('CartController', function($scope) {
// ...之前的代码...
$scope.addItem = function(item) {
var existingItem = $scope.items.find(function(i) {
return i.name === item.name;
});
if (existingItem) {
existingItem.quantity += 1;
} else {
item.quantity = 1;
$scope.items.push(item);
}
$scope.calculateTotal();
$scope.newItem = {};
};
$scope.removeItem = function(index) {
var item = $scope.items[index];
item.quantity -= 1;
if (item.quantity === 0) {
$scope.items.splice(index, 1);
}
$scope.calculateTotal();
};
$scope.calculateTotal = function() {
$scope.total = $scope.items.reduce(function(sum, item) {
return sum + (item.price * item.quantity);
}, 0);
};
});
并更新我们的HTML:
<li ng-repeat="item in items">
{{item.name}} - ${{item.price}} x {{item.quantity}}
<button ng-click="removeItem($index)">移除</button>
</li>
结论
恭喜你!你刚刚使用AngularJS构建了一个功能性的购物车应用。我们涵盖了设置AngularJS应用的基础知识、创建控制器、使用指令进行数据绑定和事件处理,甚至添加了一些更高级的功能,比如管理物品数量。
记住,学习编码是一个旅程,这只是一个开始。继续练习,尝试,最重要的是,享受这个过程!
以下是我们在使用AngularJS时用到的主要概念的总结表:
概念 | 描述 | 示例 |
---|---|---|
模块 | 应用的不同部分的容器 | angular.module('cartApp', []) |
控制器 | 包含应用某部分业务逻辑的代码 | app.controller('CartController', function($scope) {...}) |
作用域 | 指向应用模型的引用 | $scope.items = [] |
指令 | 扩展HTML的自定义属性和元素 |
ng-repeat , ng-click , ng-submit
|
数据绑定 | 在模型和视图之间同步数据 | {{item.name}} |
继续编码,记住:每个专家都曾经是新手。你做得很好!
Credits: Image by storyset