深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
<home if="{{ tag === homePageIndex }}"></home>
<!-- 新品页面 -->
<new-product if="{{ tag === newProductIndex }}"></new-product>
<!-- 购物车页面 -->
<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>
- 点击“商品自营”头像前的多选框,会触发checkboxOnChange()方法,页面会勾选/不勾选购物车的中所有商品。
- 点击“+”按钮会触发addNum()方法,增加单件商品的数量。
- 点击“-”按钮会触发subtractNum()方法,减少单件商品的数量。
// 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学习资料****
鸿蒙(HarmonyOS NEXT)最新学习路线
- HarmonOS基础技能
- HarmonOS就业必备技能
- HarmonOS多媒体技术
- 鸿蒙NaPi组件进阶
- HarmonOS高级技能
- 初识HarmonOS内核
- 实战就业级设备开发
有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。
获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料
《鸿蒙 (OpenHarmony)开发入门教学视频》
《鸿蒙生态应用开发V2.0白皮书》
《鸿蒙 (OpenHarmony)开发基础到实战手册》
OpenHarmony北向、南向开发环境搭建
《鸿蒙开发基础》
- ArkTS语言
- 安装DevEco Studio
- 运用你的第一个ArkTS应用
- ArkUI声明式UI开发
- .……
《鸿蒙开发进阶》
- Stage模型入门
- 网络管理
- 数据管理
- 电话服务
- 分布式应用开发
- 通知与窗口管理
- 多媒体技术
- 安全技能
- 任务管理
- WebGL
- 国际化开发
- 应用测试
- DFX面向未来设计
- 鸿蒙系统移植和裁剪定制
- ……
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
tps://img-blog.csdnimg.cn/direct/743b668910224b259a5ffe804fa6d0db.png)
[外链图片转存中…(img-VLzvM87J-1715882699467)]
[外链图片转存中…(img-7xuGxZIN-1715882699467)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新