gpt4 book ai didi

javascript - Vue.js 不更新 HTML

转载 作者:行者123 更新时间:2023-11-30 06:10:18 25 4
gpt4 key购买 nike

我有以下 .html我本地 Vue.js 项目中的文件(这是一个简化版本):

<!DOCTYPE html>

<html>
<head>
<meta charset="utf-8">
<title>Vue.js</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>

<body>
<main>
<div id="myElement">
<div v-for="(properties, name) in list" v-bind:key="name">{{ name }}</div>
</div>
</main>

<script type="module">
import SomeClass from "./SomeClass.js";

const myClass = new SomeClass();

let app = new Vue({
el: "#myElement",
data: {
list: myClass.object
},
});
</script>
</body>
</html>

<script type="module">里面我导入的标签 SomeClass其中包括一个名为 object 的属性:

export default class SomeClass {
constructor() {
this.object = {
name1: { ... },
name2: { ... },
...
};
}
}

这里的问题是 Vue.js 对 object 中的变化使用react(如果我使用 watch 检查它)但它不会更新我的 HTML:

<div v-for"..." v-bind:key="...">...</div> .

当新属性添加到 object 时,我该怎么做才能让 Vue.js 更新我的 HTML/旧属性更新了吗?

最佳答案

Vue 有一种方法可以将属性添加到 data 属性中的项目(因此它们保持 react 性)。 (更多信息:https://v2.vuejs.org/v2/api/#Vue-set)

下面的代码片段可以帮助您了解实际的方法:

class SomeClass {
constructor() {
this.object = {
name1: {
name: 'name3'
},
name2: {
name: 'name4'
}
}
}
}

const myClass = new SomeClass()

new Vue({
el: "#app",
computed: {
// transforming array for reactive display
transformedObj() {
const ret = []
this.keyVal().forEach(e => {
e.forEach(el => {
ret.push(el)
})
})
return ret

}
},
data: {
object: myClass.object
},
methods: {
// transforming object for better display
keyVal() {
return Object.keys(this.object).map(e => {
return Object.entries(this.object[e]).map(([k, v]) => {
return `${k}: ${v}`
})
})
}
},
mounted() {
// add new property (reactive)
Vue.set(this.object.name1, 'newProperty', '2')

// or add new property (reactive)
this.$set(this.object.name2, 'localNewProperty', 45)
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<ul>
<li v-for="(item, key) in transformedObj">{{item}}</li>
</ul>
Object: {{transformedObj}}
</div>

关于javascript - Vue.js 不更新 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59272921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com