前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >用AngularJS来实现异步数据的购物车功能设计

用AngularJS来实现异步数据的购物车功能设计

作者头像
企鹅号小编
发布于 2018-01-23 03:30:39
发布于 2018-01-23 03:30:39
1.6K0
举报
文章被收录于专栏:应用案例应用案例

我们来看一个稍微大一点的例子,它将会展示Angular的更多特性。想象一下,我们打算构建一款购物应用,需要在应用中的某个地方展示用户的购物车,并且用户能够对其进行编辑。我们直接跳到购物车这个部分:

最终UI截屏如图所示。

下面是对这段代码的一个概要解释,本书后续的内容将会对此做更深入的解析。我们从头开始:

g-app属性将用来告诉Angular页面中的哪一部分需要接受它的管理。既然我们把这个属性放在标签上,那么就是在告诉Angular,我们希望它管理整个页面。通常情况下你只需要这么做就可以了,但是,如果你打算把Angular集成到一个现有的应用中,而这个应用使用了其他的方式来管理页面,那么你可能需要把ng-app属性放到应用中的一个

上。

在Angular中,你将会使用一种叫做控制器的JavaScript类来管理页面中的区域。在body标签中引入一个控制器,就是在声明CartController将会管理介于和之间的所有内容。

ng-repeat的意思是,对于items数组中的每一个元素,都把

中的DOM结构复制一份(包括div自身)。对于div的每一份拷贝,都会把一个叫做item的属性设置给它,这样我们就可以在模板中使用这份拷贝的元素了。如你所见,这样一来就会产生3个

,其中分别包含了产品的名称、数量、单价、总价,以及一个可以用来完全删除一个项目的按钮。

{}

正如我们在“Hello,World”那个例子中所展示的,通过{{}}进行数据绑定让我们可以把变量的值插入到页面的一部分中,同时能够保证它会自动同步。完整的表达式{}将会获取循环中的当前item,然后把这个item的title属性值插入到DOM中。

定义ng-model将会在输入框和item.quantity的值之间创建数据绑定关系。

里面的{{}}将会创建一个单向的关系,也就是说“在这里插入一个值”。这正是我们所要达到的效果,但是应用还需要知道用户何时修改了数量,这样它就可以修改总价了。

使用ng-model我们就可以保持变更与模型同步了。ng-model声明将会把item.quantity的值插入文本框中,同时,不管什么时候,只要用户输入了新的数值,它就会自动更新item.quantity的值。

{}

{}

我们想让单价和总价能够以美元的格式显示。Angular带有一种叫做过滤器(filter)的特性,我们可以用它来转换文本的格式,有一个内置过滤器叫做currency(货币),它可以为我们实现美元格式化。在下一章中我们将会看到关于过滤器的更多内容。

Remove

这个按钮可以让用户从他们的购物车中删除项目,点击产品旁边的Remove按钮即可,因为我们已经设置好了,点击这个按钮将会调用remove()函数。同时我们还会把$index传递过去,$index包含了ng-repeat过程中的循环计数,这样一来我们就知道要删除哪一个项目了。

function CartController($scope) {

CartController将会负责管理购物车的业务逻辑。在函数的形参中放一个$scope就可以告诉Angular:控制器需要一个叫做$scope的东西。我们可以通过$scope把数据绑定到UI中的元素上。

通过定义$scope.items,我们创建了一个虚拟的hash型数据,用来表示用户购物车中的项目集合。我们想让这些项目能够对UI的数据绑定有效,所以我们要把它们设置到$scope上。当然,这个例子的真实版本不可能只是在内存里面运行,它还需要与服务端进行交互并正确地把数据持久化。

$scope.remove = function(index) {

}

在绑定UI的时候,我们希望remove()函数也有效,所以我们也需要把它设置到$scope上。对于购物车的纯内存版,remove()函数可以只从数组中删除元素。由于ng-repeat所创建的

列表都是绑定在数据上的,所以当数组中的项目消失时,这个列表将会自动收缩。记住,无论何时,只要用户点击了Remove按钮,就会从UI中调用remove()函数。

本文来自企鹅号 - 行家汇媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - 行家汇媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Angularjs快速入门(二)
说说上一节的例子,$scope 我们没有创建这个对象,直接绑定就能获取里面的对象,这种风格遵循了一种叫迪米特法则的设计模式。
用户3055976
2018/09/12
6040
【笔记】AngularJs学习笔记[02]【实践回顾与知识点归纳】
上一篇中,我们介绍ng的数据绑定的方法,不知道你是否能给吸收。想了一下,为了在 ng 入门之前能够帮助大家打好基础,所以在这篇中我就用一个例子来解析 ng,并归纳一下 ng 的知识点。
前端修罗场
2023/10/07
2930
【笔记】AngularJs学习笔记[02]【实践回顾与知识点归纳】
AngularJS例子 ng-repeat遍历输出 通过js的splice方法删除当前行
<!doctype html> <html> <head> <meta charset="utf-8"> <title>ng-repeat directive</title> </head> <body ng-app="myApp"> <table ng-controller="CartController"> <caption>我的购物车</caption> <tr> <th>序号</th> <th>商品</th> <th>单
庞小明
2018/03/08
1.7K0
AngularJS快速入门
记得第一次听说AngularJS这项很赞的Web的前端技术,那时还是2014年,年中时我们我的一个大牛兄弟当时去面试时,被问到了是否熟悉该技术,当时他了解和使用的技术比较多。我们询问他面试情况时,他给俺这个菜菜科普了该技术,印象比较深的是该技术支持前端MVC架构,可以完成大部分原有的后台工作,当时就觉得很神奇,但由于自身技术基础比较薄弱,没有太多时间和积累去学习新的技术,因而搁置了。在2016新年初始,正好有一些富余时间,正好学习下这个被称为就是“”两个大括号“”的前端框架(当前已经非常成熟,国内大部分公司
用户1216676
2018/01/24
2.6K0
AngularJS快速入门
【AngularJS】 # AngularJS入门
ng-app 指令定义一个 AngularJS 应用程序。 若不声明,将直接显示表达式。
全栈程序员站长
2022/09/15
23.5K0
【AngularJS】 # AngularJS入门
angularjs购物车功能(全)包含 (修改,添加等功能)
全栈若城
2024/02/29
1270
angularjs购物车功能(全)包含 (修改,添加等功能)
(4)Angular的开发
angular框架,库,是一款非常优秀的前端高级JS框架,有了这个框架就可以轻松构建SPA应用程序,通过指令宽展了HTML,通过表达式绑定数据到HTML。
达达前端
2019/07/22
3.2K0
【AngularJS】—— 1 初识AngularJs
怀着激动与忐忑的心情,开始了学习AngularJS的旅程,很久之前就听说了这个前端框架,但是由于自己一直没有从事相关的工作,因此也没有进行学习。这次正好学习AngularJS,直接复习一下前端的知识。目前这里还是弱点,慢慢深入的学习。   AngularJS是Google的优秀的前端框架,目前已经应用于多个产品。   通过w3cschool.cc的学习,简单的了解了下它的使用方法,但是对于原理还没有理解。   AngularJs相对于其他的框架来说,有一下的特性:   1 MVVM   2 模块化
用户1154259
2018/01/17
2.8K0
【一起来烧脑】一步学会AngularJS系统
AngularJS是一个JavaScript框架 一个用JavaScript编写的库
达达前端
2019/07/18
5.6K0
【一起来烧脑】一步学会AngularJS系统
angularJs购物车--(卖药)
全栈若城
2024/02/29
1190
angularJs购物车--(卖药)
Angularjs基础(二)
AngularJS 表达式   AngularJS 表达式写在双大括号内:{{expression}}   AngularJS 表达式把数据绑定到HTML,这与ng-bind 指令有异曲同工之妙   AngularJS 将在表达式书写的位置输出数据。   AngularJS 表达式很像JavaScript表达式:他们可以包含文字,运算符和变量。     实例{{5+5}} 或者{{firstName + "" +lastName}} AngularJs 数字   AngularJS 数字就像J
用户1197315
2018/01/19
3.5K0
AngularJS简介
AngularJS是一个JavaScript矿建,他是一个JavaSscript编写的库。可以通过<script>标签添加到HTML页面。
全栈程序员站长
2022/09/16
5.1K0
Angularjs基础(四)
AngularJS过滤器     过滤器可以使用一个管道符(|)添加到表达式和指令中。       AngularJS过滤器可用于转换数据:           currency     格式化数字为货币格式           filter       从数组中选着应子集。           lowercase      格式化字符串为小写。           orderBy      根据某个表达式排列数组           uppercase     格式化
用户1197315
2018/01/19
3K0
前端MVC学习总结(一)——MVC概要与angular概要、模板与数据绑定
张果
2018/01/04
15.6K0
前端MVC学习总结(一)——MVC概要与angular概要、模板与数据绑定
Angularjs 服务
AngularJS 服务(Service):www.runoob.com/angularjs/angularjs-services.html
全栈程序员站长
2022/09/15
2.1K0
AngularJS基础入门初探
  (2)由Misko Hevery 等人创建,2009年被Google所收购,用于其多款产品
Edison Zhou
2018/08/20
1.8K0
AngularJS基础入门初探
再谈angularJS数据绑定机制及背后原理—angularJS常见问题总结
ng-bind 单向数据绑定($scope -> view),用于数据显示,简写形式是 {{}}。
周陆军
2018/08/02
8K0
AngularJS 指令
AngularJS 通过被称为指令的新属性来扩展 HTML。 AngularJS 通过内置的指令来为应用添加功能。 AngularJS 允许你自定义指令。 AngularJS 指令 AngularJS 指令是扩展的 HTML 属性,带有前缀ng-。 ng-app指令初始化一个 AngularJS 应用程序。 ng-init指令初始化应用程序数据。 ng-model指令把元素值(比如输入域的值)绑定到应用程序。 完整的指令内容可以参阅 AngularJS 参考手册。 AngularJS 实例 在输入框中尝
企鹅号小编
2018/01/26
3.5K0
轻松构建灵活的表单,试试AngularJS 选择框
在Web开发中,表单是一个非常重要的组件。表单通常包含各种输入字段,例如输入框、复选框和选择框等,用于收集用户的输入数据。AngularJS 提供了一系列的指令和服务,使得表单的开发更加简单、高效。本文将详细介绍 AngularJS 中的选择框(Select)指令,以及如何使用它来构建灵活的表单。
网络技术联盟站
2023/07/05
2620
基于AngularJS的过滤与排序
前面了解了AngularJS的使用方法,这里就简单的写个小程序,实现查询过滤以及排序的功能。 本程序中可以了解到:   1 angularjs的过滤器   2 ng-repeat的使用方法   3 控制器的使用   4 数据的绑定   程序设计分析   首先,如果要是先查询过滤,就要使用到AngularJS中的 过滤器filter 了。   直接在表达式的后面使用管道命令符 | ,按照下面的写法就可以达到一个过滤的效果: {{ persons | filter:query }}   通过使用
用户1154259
2018/01/17
2.4K0
基于AngularJS的过滤与排序
相关推荐
Angularjs快速入门(二)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档