将v-for当前项信息从列表带到详情

本文介绍了一个使用Vue.js实现的商品瀑布流列表组件,该组件能够展示商品图片、标题、简介、价格等信息,并提供了点击商品图片跳转到详情页的功能。在详情页中,通过localStorage存储和读取商品数据。
<WaterfallItem v-for="(item, index) in caseList" :key="index" :order="index">

  <div v-if="item.num>item.sell_num" class="itemImg" :id="item.id" :data="host+item.img_url"  @click="clickImg(item)">
    <div class="img_show"><img :src="host+item.img_url"></div>
    <div class="goodsTit">{{item.title}}:</div> <div class="goodsIntro" v-html="item.remark"></div>
    <p class="inPrice"><i>¥ {{item.price}}</i> <span class="fr">价格:{{item.in_price}}</span></p>
    <p class="numPage">总:{{item.num}} <span class="fr">已卖:{{item.sell_num}}</span></p>
    <!-- <div class="share">
        <span><a href="javascript:void(0);"><img src="../../../static/images/qzone.png"></a></span>
        <span><a href="https://weibo.com/u/3818321066/home?wvr=5"><img src="../../../static/images/weibo.png"></a></span>
        <span><a href="javascript:void(0);"><img src="../../../static/images/weixin.png"></a></span>
    </div> -->
  </div>
</WaterfallItem>
clickImg(item){//点击跳转
  //存储当前点击元素绑定的数据(这里需要将数据转化为字符串,因localStorage只能存字符串),在跳转后的页面将其转为JSON格式
  localStorage.setItem('goodsItem',JSON.stringify(item));
  localStorage.setItem('host',this.host);
  this.$router.push("/oneBuyList");
}

详情页中

created(){
  this.goods=JSON.parse(localStorage.getItem("goodsItem"))
},
### 实现 uni-app 中 v-for 列表独立正向计时 在 Uni-app 的开发环境中,`v-for` 循环用于动态生成列表。为了实现每个列表具有独立的正向计时功能,可以利用 Vue.js 数据绑定机制以及定时器来完成这一需求。 以下是具体实现方式: #### 1. 定义数据结构 创建一个数组对象作为 `v-for` 渲染的数据源,其中每个对象都包含当前时间戳字段(如 `startTime`),并记录其初始启动的时间点。 ```javascript data() { return { items: [ { id: 1, startTime: Date.now(), elapsedTime: 0 }, { id: 2, startTime: Date.now(), elapsedTime: 0 }, { id: 3, startTime: Date.now(), elapsedTime: 0 } ] }; } ``` 上述代码定义了一个名为 `items` 的数组,其中每个元素都有唯一的 ID 和对应的 `startTime` 属性表示该条目开始计时的时间点[^1]。 #### 2. 使用定时器更新状态 通过 JavaScript 的 `setInterval()` 方法设置全局定时器,在固定间隔时间内遍历所有列表,并计算它们各自经过的时间差值。 ```javascript methods: { startCounting() { this.timer = setInterval(() => { this.items.forEach(item => { item.elapsedTime = Math.floor((Date.now() - item.startTime) / 1000); }); }, 1000); // 每秒刷新一次 } }, onLoad() { this.startCounting(); }, onUnload() { clearInterval(this.timer); // 页面卸载时清除定时器防止内存泄漏 } ``` 这里需要注意的是,当组件销毁或者切换到其他页面的时候应该停止这个定时器以释放资源[^2]。 #### 3. 绑定模板显示逻辑 最后一步是在 HTML 模板部分使用 `v-for` 来迭代展示这些带有实时更新属性的对象们。 ```html <view> <block v-for="(item, index) in items" :key="index"> <text>Item {{ item.id }} has been running for {{ item.elapsedTime }} seconds.</text><br/> </block> </view> ``` 这样就可以看到每一个单独目的运行持续时间被正确地呈现出来了。 #### 总结说明 此方案基于 Vue 双向绑定特性实现了多个独立倒数/正数计时器的功能扩展应用案例;同时考虑到性能优化方面也加入了必要的清理操作避免不必要的开销影响用户体验质量.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值