问问题
3890 次
2 回答
1
如Vue 文档中所述v-model
:
默认情况下,
v-model
在组件上value
用作道具和input
事件。
由于您需要特定的行为,因此您需要有方法来解码(显示时)和编码(更新时)值,将v-model
into:value
和@input
.
因此,您的下一个问题将是如何使用 JavaScript 解码和编码 HTML 实体。有一些方法已经讨论了很多1次2这里3。我喜欢mathiasbynens/he库来做这件事,所以这里有一个示例代码,它与 Vue 一起展示了它的作用:
new Vue({
el: '#app',
data () {
return {
name: 'Name‽'
}
},
methods: {
encode (value) {
this.name = he.encode(value)
},
decode (value) {
return he.decode(value)
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/he@1.2.0/he.min.js"></script>
<div id="app">
<input :value="decode(name)" @input="encode($event.target.value)" />
<p>{{ name }}</p>
</div>
于 2018-12-14T11:51:34.940 回答
0
我按照 Erick Petrucelli 的建议做了以下工作。
VueProjectRoot > npm install he --save
Vue组件文件:
<template>
<v-textarea v-model.trim="userNote"
label="My Notes" outlined dense
append-outer-icon="mdi-content-save"
@click:append-outer="saveNote"
rows="2"
></v-textarea>
</template>
<script>
import he from 'he/he/';
export default {
...
data() {
return {
userNote: 'I don't have access to them. <a href="#" onclick="alert(1)"><click</a>',
}
},
methods:{
decode (value) {
let decoded = value
if(value){ decoded = he.decode(value) }
return decoded
},
saveNote(){
// implement the save action
}
}
,created(){
this.userNote = this.decode(this.userNote)
}
}
</script>
于 2021-06-23T19:45:06.320 回答