解决uni-app props 传递数组修改后不能使用问题
2019-04-17 11:33
639 查看
1.子组件页面结构
//NoticesMarquee 组件 <view v-for="(item, index) in tempList" :key="index" > {{item.Title}} </view>
2.父组件中使用
在父组件中引用子组件并传递值。
<template> <view> <!--使用子组件 --> <notices-marquee :items="noticesList" ></notices-marquee> </view> </template> <script> import NoticesMarquee from '@/components/index/NoticesMarquee' export default { components:{ NoticesMarquee }, data() { return { noticesList: [{ Title: '4874545454554545454545454', Id: 2 }, { Title: '7888844844456454564564565465656', Id: 1 }, { Title: '78947898526665656+56+5+656', Id: 3 }, ], }; } } </script> <style> </style>
3.问题描述
3.1 问题概述:
现象为:在setTimeout()中修改值,但是对
items这个数组并不起作用,即修改后的数组与原来一致,并没有达到修改数组的效果,代码如下:
export default { props: ['items'], methods: { showMarquee: function() { let _this = this; setTimeout(function() { _this.items.push(_this.items[0]); _this.items.shift() }, 500) }, }, }
3.1 解决办法:
使用中间临时数组(
tempList(),在
created()时就开始将值传递给临时数组,防止出现延时情况,后续单独操作临时数组即可。
export default { props: ['items'], data() { return { tempList: [] } }, methods: { showMarquee: function() { let _this = this; setTimeout(function() { _this.tempList.push(_this.tempList[0]); _this.tempList.shift() }, 500) }, }, created() { this.tempList = this.items } }
推荐是最好的支持,关注是最大的鼓励。亲爱的朋友,很荣幸在园子里遇到您,希望能与您一起学习~~~。
相关文章推荐
- 抛开cookie使用session-PHP中SESSION不能跨页传递问题的解决办法
- 抛开cookie使用session-PHP中SESSION不能跨页传递问题的解决办法
- 【ZYNQ LINUX】使用问题04 ubuntu12 环境变量修改错误,不能进入root 修改的解决办法
- 装zookeeper集群的时候修改了etc/profile的export Path后导致命令行不能使用了问题解决
- 如何使用 BindingSource 绑定 ListBox,同时解决绑定 List<T> 后修改数据源不能同时刷新界面显示的问题
- 抛开Cookie使用SESSION-PHP中SESSION不能跨页传递问题的解决办法(转载)
- setinterval 使用闭包解决参数不能传递的问题
- 今天通过修改Oracle 数据库解决的一个ERP不能打出验收单问题.
- Flex不能使用调试问题解决[原]
- 解决exchange2007邮件服务器下使用Foxmail不能外发邮件问题
- flash embed fonts–动态创建文本时嵌入字体_解决_rotation和_alpha不能使用的问题
- 使用p3p解决iframe中跨域传递cookie的问题
- 解决Tomcat5中不能在JSP中使用EL的问题
- sql server 2008手工修改表结构,表不能保存的问题与解决
- 添加删除WINDOW组件不能使用的问题解决
- 在ashx一般处理程序文件中不能使用session和request的问题解决办法
- 遇及不能使用MSN问题,终归解决(zz)
- 飞信2008在Windows 7不能使用问题的解决方法
- CAS不能使用中文账户登录问题的解决
- 同时安装ASA10以及ASA11两个数据库导致不能使用SQLSERVER2005 management studio的问题解决