gpt4 book ai didi

javascript - 在 vuejs2 中呈现动态生成的 html 模板中的绑定(bind)值

转载 作者:行者123 更新时间:2023-11-29 23:28:27 25 4
gpt4 key购买 nike

对于以下代码:我希望可以使用 javascript 更改“test1 span”。我该怎么做?注意:{{msg}} 可能来自 ajax 输出。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
</head>
<body>
<!-- app -->
<div id="app">
<span v-html="test"></span>
<span v-html="test1"></span>
{{test3}}
</div>
<script>
var app1 = new Vue({
el: '#app',
data: {
test: '<p style="color: red">THIS IS HTML</p>',
test1: '{{msg}}',
test3: 20,
msg: 10
}
})

function change() {
app1.msg = Math.random()
app1.test3 = Math.random()
}
setInterval(change, 2000)
</script>
</body>
</html>

修改:
也许我需要把我的问题说清楚:
接下来修改代码,当启动页面时,你会在页面中看到Go to Foo链接,然后你点击链接,你会看到hello {{msg}}
注意:这来自远程服务器:b.html
我在那里设置了一个计时器,每2秒,更改msg的值,我希望页面中的{{msg}}可以更改为随机数。

ma​​in.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
<script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
<script src="https://cdn.bootcss.com/vue-router/2.7.0/vue-router.min.js"></script>
</head>
<body>
<div id="app">
<p>
<router-link to="/foo">Go to Foo</router-link>
</p>
<router-view></router-view>
</div>

<script>
const Foo = {
template: '<div v-html="template1"></div>',

data: function () {
return {
template1: null
}
},
created: function () {
this.fetchData()
},
watch: {
'$route': 'fetchData'
},
methods: {
fetchData () {
var that = this
$.get("http://localhost/try/b.html", function(data, status) {
that.template1 = data
})
}
}
}
const routes = [
{ path: '/foo', component: Foo }
]

const router = new VueRouter({
routes
})

const app = new Vue({
router
}).$mount('#app')

function change() {
app.msg = Math.random()
}
setInterval(change, 2000)
</script>
</body>
</html>

b.html

<div>
hello
{{msg}}
</div>

最佳答案

使用 Vue.js 提供的工具。将 change() 放入 VM 的 methods 对象中,然后创建一个 created() Hook 来设置间隔。

请注意 v-html 需要一个 String,而不是 Number,所以只需添加 .toString()生成随机数时。

var app1 = new Vue({
el: '#app',
data: {
test: '<p style="color: red">THIS IS HTML</p>',
test1: null,
test3: 20,
msg: 10
},
watch: {
msg: function(newVal, oldVal) {
this.test1 = newVal
}
},
methods: {
change() {
this.msg = Math.random().toString()
this.test3 = Math.random()
}
},
created() {
setInterval(this.change, 2000)
}
})
<script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
<div id="app">
<span v-html="test"></span>
<span v-html="test1"></span>
{{ test3 }}
</div>

代替观察者,使用计算属性更容易。

var app1 = new Vue({
el: '#app',
data: {
test: '<p style="color: red">THIS IS HTML</p>',
test3: 20,
msg: 10
},
computed: {
test1() {
return this.msg.toString()
}
},
methods: {
change() {
this.msg = Math.random()
this.test3 = Math.random()
}
},
created() {
setInterval(this.change, 2000)
}
})
<script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
<div id="app">
<span v-html="test"></span>
<span v-html="test1"></span>
{{ test3 }}
</div>

关于javascript - 在 vuejs2 中呈现动态生成的 html 模板中的绑定(bind)值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48204604/

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