javascript - Vue js 改变数组值
问题描述
Vue.js 只是不允许我更改数组值:
<div class="col-sm-1 col-md-1" v-for="(l, i) in locations" :key="i">
<span :class="{'location-active': isActive[1]}" @click="setActive">{{l}}</span>
</div>
数据:
data() {
return {
isActive: [false, false, false, false, false]
}
}
方法:
setActive() {
this.isActive[1] = true;
}
我首先使用 for 循环但它不起作用,所以尝试手动设置数组的值它只是不起作用,它只是不会将 isActive[index] 设置为 true。
解决方案
这是 Vue 的常见“陷阱”以及它如何找到模型更改。
https://vuejs.org/2016/02/06/common-gotchas/
当您通过直接设置索引(例如 arr[0] = val)或修改其长度属性来修改数组时。同样,Vue.js 也无法获取这些更改。始终使用 Array 实例方法或完全替换它来修改数组。Vue 提供了一个方便的方法 arr.$set(index, value),它是 arr.splice(index, 1, value) 的语法糖。
语法在 2.0 中更新为以下内容:
Vue.set( target, propertyName/index, value )
所以在你的情况下
Vue.set(this.isActive, 1 ,true);
另见此处:http: //vuejs.org/guide/list.html#Array-Change-Detection
推荐阅读
- java - 映射表缺少 @manyToMany 中的非唯一 ID
- javascript - 动态添加输入元素[纯JS]
- c# - 如何使 ASP.NET Core Web API 操作异步执行?
- php - 如果数据库中已经存在“1”,则数据库不会接受另一个“1”。它只接受'0'
- ios - 为什么 Alamofire 的上传进度在上传期间从未完成 1.0?
- javascript - 使用 nodemailer 和 smtp 发送邮件,无需身份验证
- php - 更改在 Woocommerce 中注册时显示的隐私政策文本
- sharepoint - 使用 ADFS 为 WAP 和后端系统提供 Kerberos 令牌
- factory-pattern - 为什么工厂模式的对象创建方法接受字符串参数?
- java - QueryException:无法解析属性