赞
踩
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
<!-- 购物车页面 -->
<shopping-cart if="{{ tag === shoppingCartIndex }}"></shopping-cart>
<!-- 我的页面 -->
<my-info if="{{ tag === myInfoIndex }}"></my-info>
<!-- 导航栏 -->
<common-toolbar tag="{{ tag }}" @switch-toolbar="switchToolbar"></common-toolbar>
在子组件commonToolbar.js中通过this.$emit(‘switchToolbar’, {info: value})触发事件并向上传递参数,homePage.js中的switchToolbar方法接收子组件传过来的索引。在子组件commonToolbar.js文件中定义props,props用于组件之间的数据通信,当父组件中的tag发生变化的时候,子组件也会随之响应,然后改变toolbar-item中icon的颜色。
// homePage.js import CommonConstants from '../../common/constant/commonConstants'; export default { data: { // 页面默认展示主页,tag是主页面的索引 tag: 1, ... }, /** * 切换导航栏内容 * * @param value 子组件传过来的索引 */ switchToolbar(value) { this.tag = value.detail.index; } } // commonToolbar.js import CommonConstants from '../../common/constant/commonConstants'; export default { props: ['tag'], data: { commonIcon: CommonConstants.COMMON_TOOLBAR_ICON, toolbarName: CommonConstants.COMMON_TOOLBAR_NAME, // 主页面索引 homePageIndex: CommonConstants.HOME_PAGE_INDEX, // 新品页面索引 newProductIndex: CommonConstants.NEW_PRODUCT_INDEX, // 购物车页面索引 shoppingCartIndex: CommonConstants.SHOPPING_CART_INDEX, // 我的页面索引 myInfoIndex: CommonConstants.MY_INFO_INDEX }, /** * 向父组件传值 * * @param index 选中子模块的索引 */ switchToolbar(index) { this.$emit('switchToolbar', { index: index }); } }
购物车页面由顶部标题栏、购物车商品列表、猜你喜欢的商品列表三部分组成,并以子组件的形式显示在主页面中。其中,购物车商品列表使用list组件和for循环,实现对多条商品数据进行展示。猜你喜欢的商品列表是通过引用自定义组件实现的。效果如图所示:
<!-- shoppingCart.hml --> <element name="liked-cards" src="../../component/likedCards/likedCards.hml"></element> <div class="container"> <div class="top"> <!-- 顶部导航标题栏 --> <div class="top-title"> <text class="shopping-cart">{{ $t('strings.shopping_cart') }}</text> <text class="edit">{{ $t('strings.edit') }}</text> </div> <!-- 购物车商品列表 --> <div class="top-list"> <div class="list-title"> <input class="all-checkbox" type="checkbox" checked="{{ isAllSelect }}" @change="checkboxOnChange"> </input> <image class="my-icon-size" src="{{ person }}"></image> <text class="mall-self-operated">{{ $t('strings.mall_self_operated') }}</text> </div> <list class="list"> <list-item for="{{ (index, item) in shoppingListData }}" class="list-item"> <div class="list-content"> <input class="checkbox" type="checkbox" checked="{{ item.isSelect }}"></input> <image class="product-pictures" src="{{ item.image }}"></image> <div class="box-content"> <text class="product-title">{{ $t(item.title) }}</text> <text class="product-subtitle">{{ $t(item.subtitle) }}</text> <div class="content-price"> <text class="product-price">{{ item.price }}</text> <div class="price-num"> <image class="my-icon-size" @click="subtractNum(index)" src="{{ item.num === 0 ? commonIcon.decreaseDisableIcon : commonIcon.decreaseIcon }}"> </image> <text class="product-num">{{ item.num }}</text> <image class="my-icon-size" src="{{ commonIcon.increaseIcon }}" @click="addNum(index)"> </image> </div> </div> </div> </div> </list-item> </list> </div> </div> <!-- 猜你喜欢商品列表 --> <div class="middle-card"> <liked-cards></liked-cards> </div> </div>
// shoppingCart.js import CommonConstants from '../../common/constant/commonConstants'; export default { data: { isAllSelect: false, shoppingListData: CommonConstants.SHOPPING_LIST_DATA, commonIcon: CommonConstants.SHOPPING_CART_ICON, person: CommonConstants.COMMON_ICON.person }, /** * 购物车商品全选/非全选 */ checkboxOnChange() { this.isAllSelect = !this.isAllSelect; this.shoppingListData.filter((item) => { item.isSelect = this.isAllSelect; }); }, /** * 勾选单个商品 * * @param subscript 选中商品的索引 * @param event 单选框事件 */ singleAnswer(subscript, event) { // 修改商品的选择状态 this.shoppingListData.forEach((item, index) => { if (index === subscript) { item.isSelect = event.checked; } }) // 检查购物车中的所有商品是否都被选中 let selectAll = this.shoppingListData.every(item => item.isSelect === true); if (selectAll === true) { this.isAllSelect = true; } else { this.isAllSelect = false; } }, /** * 减少商品数量逻辑 * * @param value 当前商品的数量 */ subtractNum(value) { if (this.shoppingListData[value].num > 0) { this.shoppingListData[value].num--; } }, /** * 增加商品数量逻辑 * * @param value 当前商品的数量 */ addNum(value) { this.shoppingListData[value].num++; } }
有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。
这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了(**ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony****多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)**技术知识点。
希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!
如果你是一名有经验的资深Android移动开发、Java开发、前端开发、对鸿蒙感兴趣以及转行人员,可以直接领取这份资料
获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料****
有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。
获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料
OpenHarmony北向、南向开发环境搭建
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
tps://img-blog.csdnimg.cn/direct/743b668910224b259a5ffe804fa6d0db.png)
[外链图片转存中…(img-erUInPZZ-1715743619644)]
[外链图片转存中…(img-7yyfq6R2-1715743619645)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。