AngularJS - 购物车应用

你好,有抱负的程序员们!今天,我们将开始一段激动人心的旅程,使用AngularJS创建一个购物车应用。作为你友好的计算机科学老师,我很高兴能引导你完成这个过程,即使你完全是个编程新手。所以,拿起一杯咖啡(或者你最喜欢的饮料),让我们一起开始吧!

AngularJS - Cart Application

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结构中,我们做了几件重要的事情:

  1. 我们使用CDN链接包含了AngularJS库。
  2. 我们链接了我们自己的JavaScript文件(app.js),我们接下来会创建它。
  3. 我们在<html>标签中添加了ng-app="cartApp",告诉AngularJS这是我们的应用的根元素。
  4. 我们在<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);
};
});

让我们分解一下:

  1. 我们创建了一个名为'cartApp'的AngularJS模块。
  2. 我们定义了一个名为'CartController'的控制器。
  3. 在控制器内部,我们设置了一个用于存储物品的空数组和一个总价值变量。
  4. 我们创建了添加物品、移除物品和计算总价的函数。

构建用户界面

步骤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