![Vue.js 3.0从入门到精通(视频教学版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/154/44510154/b_44510154.jpg)
4.2 插值
应用程序实例创建完成后,就需要通过插值进行数据绑定。插值的方式有以下3种。
1.文本插值
数据绑定最常见的形式就是使用Mustache语法(双大括号)的文本插值:
![](https://epubservercos.yuewen.com/AF1F26/23721640501031706/epubprivate/OEBPS/Images/Figure-P54_165337.jpg?sign=1739666664-73CF1Fh1Qh5hixXcbPMITv46Y9EDOWO6-0-3ac21f68e59333fd92d168bd02b15316)
Mustache标签将会被替代为对应数据对象上message属性的值。无论何时,绑定的数据对象上message属性发生了改变,插值处的内容都会更新。
通过使用v-once指令,也能执行一次性地插值,当数据改变时,插值处的内容不会更新。但这会影响到该节点上的其他数据绑定:
![](https://epubservercos.yuewen.com/AF1F26/23721640501031706/epubprivate/OEBPS/Images/Figure-P54_165338.jpg?sign=1739666664-3xwUGwl4LiI3ciBYbsb7AKqOX5L8zzgE-0-93aa9a706c3c11ceb719d0d7798811e8)
在浏览器中运行程序4.1.html,按F12键打开控制台并切换到“Elements”选项,可以查看渲染的结果,如图4-2所示。
![](https://epubservercos.yuewen.com/AF1F26/23721640501031706/epubprivate/OEBPS/Images/Figure-P54_13883.jpg?sign=1739666664-EcplyCayXEIC0A4ooXGOVZRrhmhNP935-0-ac933f02f6a5af78e4c6738f4eeebe1e)
图4-2 渲染文本
2.原始HTML
Mustache语法会将数据解释为普通文本,而非HTML代码。为了输出真正的HTML,需要使用v-html指令。
注意
不能使用v-html来复合局部模板,因为Vue不是基于字符串的模板引擎。反之,对于用户界面(UI),组件更适合作为可重用和可组合的基本单位。
例如,想要输出一个a标签,首先需要在data属性中定义该标签,然后根据需要定义href属性值和标签内容,最后使用v-html绑定到对应的元素上。
【例4.2】输出真正的HTML(源代码\ch04\4.2.html)。
![](https://epubservercos.yuewen.com/AF1F26/23721640501031706/epubprivate/OEBPS/Images/Figure-P54_165340.jpg?sign=1739666664-PvXDZlr7j8xbt58RZSIKeVlyuZlrZEg0-0-7192c38139328ac1af35b0c58b4ad529)
在浏览器中运行程序,按F12键打开控制台并切换到“Elements”选项,可以发现使用v-html指令的p标签输出了真正的a标签,当单击“百度”后,页面将跳转到对应的页面,效果如图4-3所示。
![](https://epubservercos.yuewen.com/AF1F26/23721640501031706/epubprivate/OEBPS/Images/Figure-P55_14352.jpg?sign=1739666664-qV5vuYBCFAROsC7gQKwcj3d2N7tPZABa-0-e653bee049126c7f8e313ccc639494f2)
图4-3 输出真正的HTML
从结果可知,Mustache语法不能作用在HTML特性上,如果需要控制某个元素的属性,可以使用v-bind指令。
注意
站点上动态渲染的任意HTML可能会非常危险,因为它很容易导致XSS攻击。请只对可信内容使用HTML插值,绝不要对用户提供的内容使用插值。
3.使用JavaScript表达式
在模板中,一直都只绑定简单的属性键值。但实际上,对于所有的数据绑定,Vue.js都提供了完全的JavaScript表达式支持。
![](https://epubservercos.yuewen.com/AF1F26/23721640501031706/epubprivate/OEBPS/Images/Figure-P56_164905.jpg?sign=1739666664-sGYjWQSW1dkdBsoJwJTceXfHV01NIKRY-0-8536db7e925a72f3adf0fd457747ef9b)
上面这些表达式会在所属Vue实例的数据作用域下作为JavaScript被解析。限制就是,每个绑定都只能包含单个表达式,所以下面的例子都不会生效。
![](https://epubservercos.yuewen.com/AF1F26/23721640501031706/epubprivate/OEBPS/Images/Figure-P56_164906.jpg?sign=1739666664-TjLgzErM4YqGztJ7E5saRyez8gAoF16J-0-167b9baaf8362d40ca5ea81b76d8d5ef)
【例4.3】使用JavaScript表达式(源代码\ch04\4.3.html)。
![](https://epubservercos.yuewen.com/AF1F26/23721640501031706/epubprivate/OEBPS/Images/Figure-P56_164907.jpg?sign=1739666664-xrQBqLWPVm3tHkFMcMXuGmVUtGPI6tYW-0-0cfeb63de331cf388415249d60a60a35)
在浏览器中运行程序,结果如图4-4所示。
![](https://epubservercos.yuewen.com/AF1F26/23721640501031706/epubprivate/OEBPS/Images/Figure-P56_15120.jpg?sign=1739666664-c3Y6XItHclNfhLHC4NL100sDY3he2OgJ-0-d0553148984c4a11c8b534f451777360)
图4-4 使用JavaScript表达式