this应用详解-js原生

本文深入探讨了微信H5开发中如何利用this指针区分和操作不同数据项,特别是在朋友圈模板的动态渲染过程中,实现对每个item的独立事件处理,如点击阅读后的响应与样式变化。

 

  学习记录,以防遗忘,适合新手解惑。老鸟避让!

  在微信H5的开发中,很多页面都是简单的一个模型item在加上很多很多数据组成起来的。例如微信朋友圈,仔细观察,他的一个基本模型就是 “头像图片 + 用户昵称 + 一段文本 + 一张或大于一张小于九张的图片 + startTime ”。总计五部分,这样的一个模板写好以后,只需要去刷新(即请求数据库数据),拿到数据后,进行动态渲染,把数据填充到模板里面。拿到了X条数据,就渲染出X个模板,最后,我们的朋友圈就这样展示出来了。原理就是这样,和我今天要记录的 this 指针有一点点关系。

  模板只有一个!那么绑定在五个模块(即整个模板)上面的方法肯定是一模一样的,那请求的数据是不一样的,怎么区分事件呢?简单说,就是五个朋友都发了一条朋友圈,你要看第二个人的文字详情或图片大图,你点击了第二个人的圈圈详情,他就展示了该人的详情,那他怎么不展示其他人的详情呢?一个模板出来的模型,靠什么区分每一个 item 呢?可能其他语言有其他好的办法,JS里面可以依靠 this 指针来实现。

如图,通过模板结合数据创造出列表页,每个item 都有两个按钮,点击具体的某一个“去阅读”,不影响其他的“去阅读”按钮,还可以进行点击源“去阅读”按钮的一些样式变化和其他事件。

 

  模板中,给“去阅读”按钮绑定 onclick 事件,传参 this ,在 函数中利用this 来区分当前用户点击的是哪一个item并作出该item 对应的事件,例如去请求不同的接口以及样式改变等,

之前我有拿过 e.target 方法来尝试找到点击源并做后续的事,但发现可能不太适合以上场景。使用this 却很方便。以上仅为记录回忆用,语言潦草具有理科男文章性质。待有时间在精细修改下。

 

转载于:https://www.cnblogs.com/fanghl/p/10103870.html

### u-picker 原生实现与使用方法 `u-picker` 是 `uView UI` 中的一个组件,主要用于日期、时间或其他选项的选择功能。以下是关于其原生实现方式以及如何使用的详细介绍。 #### 1. 安装依赖 如果尚未安装 `uView UI` 库,则可以通过如下命令完成安装: ```bash npm install uview-ui --save ``` 或者使用 Yarn 进行安装: ```bash yarn add uview-ui ``` 此部分基于 Vue 和 Uni-app 的开发环境配置[^1]。 --- #### 2. 引入并注册组件 在项目中引入 `u-view` 并全局注册该库后即可直接调用 `u-picker` 组件。具体步骤如下: - **全局引入** 在项目的入口文件(通常是 main.js 或 app.vue)中引入 `uView`: ```javascript import uView from 'uview-ui'; Vue.use(uView); ``` - **局部引入** 如果仅需单独使用某个组件,可以按需导入: ```javascript import { Upicker } from 'uview-ui/components/u-picker/u-picker'; export default { components: { Upicker } }; ``` 上述两种方式均可满足实际需求,视项目规模而定[^3]。 --- #### 3. 使用场景及参数说明 以下是一个典型的 `u-picker` 实现案例,展示如何设置日期范围和回调函数来获取用户选择的结果。 ##### (1) HTML 结构 ```html <template> <view> <!-- 打开选择器按钮 --> <button @click="showPicker = true">打开日期选择</button> <!-- u-picker 组件 --> <u-picker :show="showPicker" mode="time" fields="minute" startYear="2000" endYear="2099" @confirm="onConfirm" @cancel="onCancel"> </u-picker> </view> </template> ``` ##### (2) JavaScript 部分 ```javascript <script> export default { data() { return { showPicker: false, // 控制弹窗显示与否 selectedTime: '' // 存储最终选定的时间 }; }, methods: { onConfirm(e) { this.selectedTime = e.year + '-' + e.month + '-' + e.day; console.log('确认选择:', this.selectedTime); // 输出到控制台 this.showPicker = false; // 关闭窗口 }, onCancel() { console.log('取消选择'); this.showPicker = false; // 关闭窗口 } } }; </script> ``` 此处展示了基本的功能逻辑,包括触发事件、传递数据给父组件等操作。 --- #### 4. 参数详解 | 属性名 | 类型 | 默认值 | 描述 | |--------------|----------|----------------|----------------------------------------------------------------------| | `mode` | String | `'selector'` | 设置模式:可选值为 date(日期)/ time(时间)/ region(地区) | | `fields` | String | `'day'` | 时间字段精度,默认精确至日;其他可能取值有 year/month/minute | | `startYear` | Number | 当前年份 - 10 | 起始年份 | | `endYear` | Number | 当前年份 + 10 | 截止年份 | 更多高级属性可通过官方文档进一步查阅。 --- #### 5. 注意事项 为了提升用户体验,在实际应用过程中需要注意以下几个方面: - 确保初始状态下变量已被正确定义; - 对于涉及大量计算的操作建议采用 computed 属性优化性能; - 合理利用 v-if/v-show 来管理 DOM 渲染流程以减少不必要的重绘成本。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值