vue计算属性时v-for处理数组时遇到的一个bug问题
问题
bug: You may have an infinite update loop in a component render function 无限循环
1.需要处理的数组(在 ** ssq **里):
bonus_code: ['01', '19', '25', '26', '27', '33', '10']
2.计算属性 computed:
ssqRed: function() { return this.ssq.bonus_code.splice(0, 6) }, ssqBlue: function() { return this.ssq.bonus_code.splice(6, 7) }
3.v-for 代码:
<em class="red-ball tac mr5 fl" v-for="(item, index) in ssqRed">{{ item }}</em> <em class="blue-ball tac mr5 fl" v-for="(item, index) in ssqBlue">{{ item }}</em>
4.最终结果我想把数组前6个数渲染成红色球,最后一个(也就是第7个)渲染成蓝色。
解答
我已经在 SegmentFault上提问,地址:vue计算属性computed同时操作一个数组
我已采纳答案,将代码改成:
ssqRed: function() { return this.ssq.bonus_code.slice(0, 6) }, ssqBlue: function() { return this.ssq.bonus_code.slice(6, 7) }
问题就在于自己没搞清楚 splice会对原数组造成改变。
在寻找解决方案时,朋友少晖教给我一种更好的解决方式,很感谢
即类名判断
1.如果数组大小已知,就做一个类名判断,索引大于多少展示蓝色的类名就行了;
2.处理后的 html代码:
<em v-for="(item, index) in ssq.bonus_code" :class="['tac','mr5','fl',index>5?'blue-ball':'red-ball']" >{{ item }}</em>
3.增加的代码:
index>5?'blue-ball':'red-ball'
总结
以上所述是小编给大家介绍的vue计算属性时v-for处理数组时遇到的一个bug问题,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
您可能感兴趣的文章:
- 解决vue组件中使用v-for出现告警问题及v for指令介绍
- 使用vue的v-for生成table并给table加上序号的实例代码
- 浅谈vue.js中v-for循环渲染
- VUE中v-model和v-for指令详解
- 详解vuejs之v-for列表渲染
- Vue.js中轻松解决v-for执行出错的三个方案
- 详解Vue中使用v-for语句抛出错误的解决方案
- Vue.js常用指令汇总(v-if、v-for等)
- vue.js指令v-for使用及索引获取
相关推荐
-
vue.js指令v-for使用及索引获取
1.v-for 直接上代码. 示例一: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <title></title> <
-
解决vue组件中使用v-for出现告警问题及v for指令介绍
在项目中运行v-for代码段时, <flexbox v-if="roleShow" style="padding:15px; box-sizing: border-box;"> <flexbox-item v-for="role in roles " > <x-button mini :type="role.type" style="padding: 0 14px" @clic
-
Vue.js常用指令汇总(v-if、v-for等)
有时候指令太多会造成记错.记混的问题,所以本文在记忆的时候会采用穿插记忆的方式,交叉比对,不易出错. 本文主要讲了一下六个指令: v-if//v-show//v-else//v-for//v-bind//v-on 1. v-if 条件渲染指令,根据其后表达式的bool值进行判断是否渲染该元素: eg: HTML: <div id="example01"> <p v-if="male">Male</p> <p v-if=&qu
-
浅谈vue.js中v-for循环渲染
这两天学习了Vue.js 感觉v-for循环渲染这个地方知识点挺多的,而且很重要,所以,今天添加一点小笔记. 一.简介 vue.js 的循环渲染是依赖于 v-for 指令,它能够根据 vue 的实例里面的信息,循环遍历所需数据,然后渲染出相应的内容.它可以遍历数组类型以及对象类型的数据,js 里面的数组本身实质上也是对象,这里遍历数组和对象的时候,方式相似但又稍有不同. (一)遍历对象 <div id="app"> <ul> <li v-for="
-
Vue.js中轻松解决v-for执行出错的三个方案
前言 Vue.js 是开源的一个前端开发库,通过简洁的 API 提供高效的数据绑定和灵活的组件系统.在前端纷繁复杂的生态中,Vue.js在近年来受到一定程度的关注,目前在 GitHub上已经有5000+. 本文是笔者在开发实践中踩过的坑,总结和分享出来,希望对大家学习Vue有所帮助.下面来看看详细的介绍: [问题描述] v-for遍历数组中存在空值导致页面报错,情况如下: 开发框架是以Vue为模型绑定的核心,根据错误可以进行一个简单的判断: ▪ removeChild操作既然不是发生在开发者显示
-
详解Vue中使用v-for语句抛出错误的解决方案
Vue 中使用v-for语句抛出错误的解决方案 今天在维护以前的项目的时候遇见了下面的报错情况,开始我以为是因为jQuery和Vue冲突了,所以把以前的jQuery改了,但是还是出现同样的错误-通过查阅资料,发现是因为循环的变量里面的值重复了,导致Vue报错. 复制代码 代码如下: Uncaught (in promise) TypeError: Cannot read property 'removeChild' of null 接下来查了一下解决方案,发现在Vue 2.0之前的版本可以通过在
-
详解vuejs之v-for列表渲染
Vue.js是一个构建数据驱动的web界面的库.重点集中在MVVM模式的ViewModel层,因此非常容易与其它库或已有项目整合 Vue.js 的核心是一个响应的数据绑定系统,它让数据与DOM保持同步非常简单 如下列表展示,当我们从后端接口或者json文件使用ajax获取数据之后现实到页面,我们有n中方式去把数据渲染到页面 1.使用js的for循环去遍历填充 2.ng的ng-repeat 今天我们使用vue.js的v-for 一.html <div class="shop_list_box
-
VUE中v-model和v-for指令详解
1.基本雏形 <!DOCTYPE html> <html> <head> <title></title> <script src="https://unpkg.com/vue/dist/vue.js"></script> <script type="text/javascript"> window.onload = function(){ var vm = new Vue
-
使用vue的v-for生成table并给table加上序号的实例代码
现在有一个使用mybatis的分页插件生成的table,table中数据是通过vue获得的 , 前台显示使用<tr v-for="item in items"> 后台vue获取数据使用分页插件进行查询然后使用回调,将结果返回给vue的一个model /** * 分页控件加载 * @param data */ function aspnetPagerInfoIM(pageDataShow,pageModule,resource, modelCallBack) { var pa
-
vue计算属性时v-for处理数组时遇到的一个bug问题
问题 bug: You may have an infinite update loop in a component render function 无限循环 1.需要处理的数组(在 ** ssq **里): bonus_code: ['01', '19', '25', '26', '27', '33', '10'] 2.计算属性 computed: ssqRed: function() { return this.ssq.bonus_code.splice(0, 6) }, ssqBlue:
-
vue计算属性无法监听到数组内部变化的解决方案
vue的计算属性 计算属性可以帮助我们简化代码,做到实时更新,不用再自己添加function去修改data. 首先看一下计算属性的基本写法(摘自官网) var vm = new Vue({ el: '#demo', data: { firstName: 'Foo', lastName: 'Bar' }, computed: { fullName: function () { return this.firstName + ' ' + this.lastName } } }) 这样我们在模版里这样
-
Vue计算属性的使用
我们都知道在Vue构造函数的参数对象中有一个[data]属性,该属性值是一个对象,该对象是对数据的代理,是一个键值对并且时刻与页面表现是一致的,但是这里面只能是简单的键值对,不能拥有业务逻辑,并且由于[data]中的属性属于同一个生命周期,所以如果我们需要某一个属性是依赖于另外一个属性时,在[data]中是做不到的,于是Vue为我们提供了[计算属性] 一.计算属性 1.1 概述 计算属性归根结底也是属性,它也是跟表现层是时刻同步的,虽然我们可以在插值中对数据进行各种处理,但是插值中的表达式处理毕
-
vue计算属性及使用详解
一.什么是计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="example"> {{ message.split('').reverse().join('') }} </div> 这里的表达式包含3个操作,并不是很清晰,所以遇到复杂逻辑时应该使用Vue特带的计算属性computed来进行处理. 二.计算属性的用法 在一个计算属性里可以完成各种复杂的逻辑,包括运算.函数调
-
vue计算属性和监听器实例解析
基本实例 <div id="example"> <p>Original message: "{{ message }}"</p> <p>Computed reversed message: "{{ reversedMessage }}"</p> </div> var vm = new Vue({ el: '#example', data: { message: 'Hello'
-
Vue 计算属性 computed
目录 1.基础例子 2.计算属性缓存 vs 方法 3.计算属性的 setter 前言: 一般情况下属性都是放到data中的,但是有些属性可能是需要经过一些逻辑计算后才能得出来,那么我们可以把这类属性变成计算属性. 比如以下: <div id="example"> {{ message.split('').reverse().join('') }} </div> 在这个地方,模板不再是简单的声明式逻辑.你必须看一段时间才能意识到,这里是想要显示变量 message
-
vue计算属性及函数的选择
目录 一.计算属性 使用场景 定义格式 普通写法 使用格式 示例 —— 数组求和 computed有缓存 二.总结 一.计算属性 使用场景 从已有的数据A中计算等到的新的数据B,使用计算属性. 如果一个结果需要依赖data中的数据,但是需要经过一些逻辑处理,才能得到你想要的数据.此时就可以使用计算属性. 定义格式 在vue实例中,补充computed配置项 普通写法 { data(){}, methods: {} // 声明计算属性 computed: { //属性名字(计算属性名称) //属性
-
Vue计算属性的学习笔记
本文为大家分享了Vue计算属性的学习笔记,供大家参考,具体内容如下 ①模板内的表达式实际上只用于简单的运算,对于复杂逻辑,使用计算机属性. ②基础例子: <div id = "example"> <p>Original message:"{{message}}"</p> <p>Computed reversed message:"{{reversedMessage}}"</p> <
-
vue 计算属性和侦听器的使用小结
1. 计算属性和侦听器 1.1 计算属性 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script> </head> <body> <div id="app"
-
Vue计算属性实现成绩单
本文实例为大家分享了Vue计算属性实现成绩单,供大家参考,具体内容如下 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>成绩单统计</title> <script src="js/vue.js" type="text/javascript" charset="utf-8&quo
随机推荐
- 使用SQL Mail收发和自动处理邮件中的扩展存储过程简介
- 电脑维修的基本原则和方法
- 详解Java MyBatis 插入数据库返回主键
- 详解Java图形化编程中的鼠标事件设计
- java中set接口使用方法详解
- Java abstract class 与 interface对比
- mvc重定向方式详解
- JavaScript实现的石头剪刀布游戏源码分享
- BootStrap实用代码片段之一
- .net 弹出消息框后导致页面样式变乱解决方法
- php for 循环使用的简单实例
- 產生圖片隨機字串
- python使用cPickle模块序列化实例
- C# 实现连连看功能(推荐)
- CentOS系统下如何设置mysql每天自动备份
- mysql性能优化脚本mysqltuner.pl使用介绍
- javascript稀疏数组(sparse array)和密集数组用法分析
- php生成过去100年下拉列表的方法
- jQuery学习笔记之创建DOM元素
- 简单实现jQuery多选框功能