(1)使用 {{}} 将变量包裹起来,vue会将变量的值解析为普通文本,而非 HTML 代码
(2)这个行为是响应式的,动态修改 {{}} 中数据的值,相关Dom的内容也会发生改变javascript
<div>{{msg}}</div> <div>{{html}}</div>
data() { return { msg:"good day", html:"<h2>我是h2</h2>" } }
渲染结果:
html
v-html指令至关于对当前标签元素中的innerHTML属性进行赋值
v-text指令至关于对当前标签元素中的innerText属性进行赋值vue
<div v-text="msg"></div> <div v-html="html"></div>
data() { return { msg:"good day", html:"<h2>我是h2</h2>" } }
渲染结果:
java
(1)通常标签属性的值解析为文本,当使用v-bind指令时,则属性的值解析为vue中定义的变量
(2)v-bind能够简写成:数组
<!-- msg值为good day --> <div v-bind:title="msg">你好</div> <!-- 简写 --> <div :title="msg">世界</div>
渲染结果:app
<div title="good day">你好</div> <div title="good day">世界</div>
前面的指令v-html/v-text/v-bind实现的数据绑定是单向的,即 数据 -> 视图(视图会响应数据的变化)
而v-model能够实现双向数据绑定,除了视图会响应数据的变化外,视图层的变化也会致使data中数据的变化spa
(1)文本框和文本域将值绑定到value属性上,同时监听input事件,将input框的值同步至data对应的数据上
(2)单选框和复选框也是将值绑定到value属性,同时监听change事件,与文本框不一样的是,它只绑定checked属性为true的元素。单选框绑定是一个数据,而c复选框绑定一个数组
(3)下拉菜单绑定select标签的value属性,并监听change事件code
<template> <div id="app"> <h4>文本框的值为{{msg}}</h4> <h4>单选框的值为{{gender}}</h4> <h4>复选框的值为 <span v-for="item in hobby" :key="item"> {{item}} </span> </h4> <h4>选中的城市为{{city}}</h4> <h4>文本域的值为{{content}}</h4> <input type="text" v-model="msg"> <div>性别: <input type="radio" name="gender" v-model="gender" value="man">男 <input type="radio" name="gender" v-model="gender" value="women">女 </div> <div> 爱好 <input type="checkbox" name="hobby" v-model="hobby" value="电影">电影 <input type="checkbox" name="hobby" v-model="hobby" value="音乐">音乐 <input type="checkbox" name="hobby" v-model="hobby" value="游泳">游泳 </div> <div> <select v-model="city"> <option value="" disabled>请选择一个城市</option> <option value="020">广州</option> <option value="0755">深圳</option> <option value="021">上海</option> </select> </div> <div> <textarea v-model="content" cols="30" rows="10"></textarea> </div> </div> </template> <script> export default { data() { return { msg:"good day", gender:"man", hobby:[], city:"", content:"" } } } </script>
对于全部的数据绑定,Vue.js 都提供了彻底的 JavaScript 表达式支持htm
<div id="app"> <div v-html="5+10"></div> <p>{{10+30}}</p> <p>{{num>10? 'YES' : 'NO'}}</p> <p>{{ msg.split('').reverse().join('') }}</p> </div>