vue模板里面直接取数组的元素值无效怎么办?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue模板里面直接取数组的元素值无效怎么办?相关的知识,希望对你有一定的参考价值。

pick: [true, true, true, true]
v-if="pick[0]"无效怎么办啊

检查数组的位置,需要放在data的function里面,模板元素才能取到这个值。
另外需要检查后面有没有重新赋值。
参考技术A vue的计算属性
计算属性可以帮助我们简化代码,做到实时更新,不用再自己添加function去修改data。
首先看一下计算属性的基本写法(摘自官网)
var vm = new Vue(
el: '#demo',
data:
firstName: 'Foo',
lastName: 'Bar'
,
computed:
fullName: function ()
return this.firstName + ' ' + this.lastName


)12345678910111213

这样我们在模版里这样引入computed属性就可以了,他的效果个data一样
<div id="demo"> fullName </div>1

这样我们修改firstName或者lastName,fullName都会同步更新
这里我们主要不是讲这个,而是讲如果把 firstName和lastName放在一个数组里
比如这样[firstName ,lastName]
如果这时候修改数组中的一项会不会有相同的效果呢?
修改一下代码
var vm = new Vue(
el: '#demo',
data:
nameArray:['Foo' ,'Bar']
,
computed:
fullName: function ()
return this.nameArray[0] + ' ' + this.nameArray[1]


)123456789101112
methods:
change ()
this.nameArray[0] = '123'
1234

触发change方法可见fullName并没有变化。原因可能是vue没有监听到数组 nameArray的长度变化。
此时我们可以采用splice让数组的长度有个变化,这时候vue就可以监听到了
this.nameArray.splice(0, 1, '123')1

或者使用vue的$set方法
this.$set(this.nameArray, 0, '123')1

还有一点要注意,就是如果这个计算属性没有使用过,也就是说页面中没有引用,也没有其他变量使用他,同样不会触发计算属性。至少,来个console打印一下也行

freemarker Set 操作 取值

我想要这种效果:
后台:Set s = new TreeSet();
前台能直接取到s的任意一个序列的值,而不是遍历。比如说我想直接取s的第三个值,怎么写?
$s[1]这样不行,我试过了。
因为我后台里面保存的是实体,Set是他和其他表的一个关联,所以才用Set,如果要转换成List或者数组的话就会比较麻烦,因为不只是这一个关联。

参考技术A 不行的,Set只能遍历啊,他存的是按hashcode算出存什么地方的,你能按照hashcode取么?
你就给改成list呗
你的实体类应该是按照映射文件形成的关联关系,如果改成list,就把映射文件<set name="" cascade="">
<key column="" />
<one-to-many class="" />
</set>改成
<list name="" >
<key column="" />
<list-index column="增加一个字段,说明list的排序方式" base="1" />
<one-to-many class="" />
</list>本回答被提问者和网友采纳
参考技术B 你那样取值 可以用数组
在后台定义一个Objects[] obj = new Objects[3];

前台取值 可以直接用$Obj[0],$obj[1],$obj[2]

以上是关于vue模板里面直接取数组的元素值无效怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

找出n个有序数组中第K小的数。怎么写算法啊?各位帮帮忙!

freemarker Set 操作 取值

java中怎么取两个数组中不相同的数据?

vue.js的v-if判断数组多少个

c++ 怎么取list中特定的一块区域的值,比如list中有100条记录,我想直接取20-50的记录怎么取?新人求大神.

微信小程序点击切换class