未被充分利用和鲜为人知的 interrobang (‽,实体‽
)需要重新流行起来!但是Vue不允许我将其与v-model
一起使用。
data () {
return {
list_name: 'Name‽'
}
}
<input v-model="list_name" type="text">
</input>
它只是将值输出为字符串'Name‽'
。我们如何显示这个惊人的符号‽
答案 0 :(得分:0)
如Vue documentation关于v-model
所述:
默认情况下,组件上的
v-model
使用value
作为道具,使用input
作为事件。
由于您需要特定的行为,因此需要有一些方法来解码(显示时)和编码(更新时),将v-model
分为:value
和{{1 }}。
因此,您的下一个问题将是如何使用JavaScript解码和编码HTML实体。这里1已经2多次3讨论了一些方式。我喜欢mathiasbynens/he库来做到这一点,所以下面是一个示例代码,展示了它与Vue一起运行的情况:
@input
new Vue({
el: '#app',
data () {
return {
name: 'Name‽'
}
},
methods: {
encode (value) {
this.name = he.encode(value)
},
decode (value) {
return he.decode(value)
}
}
})
答案 1 :(得分: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>