vue指令带有前缀 v-

一、v-bind 单向数据绑定

在html中显示数据,除了使用插值表达式{{}}之外,也可以使用vue中的v-bind指令。

... ...
<body>
<div id="app">
<!-- v-bind指令 -->
<h1 v-bind:title="message">
{{content}}
</h1>
</div>
<script src="vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
content: '我是标题',
message: '页面加载于 ' + new Date().toLocaleString()
}
})
</script>
</body>
... ...

鼠标悬停到标题上,可以看到显示了data里的message数据,这就是v-bind:title="message"起了作用。

v-bind也可以直接使用简写,就是一个冒号

<!-- v-bind 指令的简写形式: 冒号(:) -->
<h1 :title="message">
{{content}}
</h1>

二、v-model 双向数据绑定

上面的v-bind单向绑定,其实就是在元素中拿到了data里的数据来展示。

而双向绑定,不仅可以拿到data的数据展示到页面,而且当修改页面值的时候,也可以修改data里的数据。看例子:

... ...
<body>
<div id="app">
<!-- v-bind:value只能进行单向的数据渲染 -->
<input type="text" v-bind:value="searchMap.keyWord"><br>
<!-- v-model 可以进行双向的数据绑定 -->
<input type="text" v-model="searchMap.keyWord"> <p>{{searchMap.keyWord}}</p>
</div>
<script src="vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
searchMap:{
keyWord: '双向绑定'
}
}
})
</script>
</body>
... ...



可以看到上面2个输入框都拿到了data里的searchMap.keyWord的值,显示"双向绑定"

这时候先修改上面的输入框的值,这是单向绑定的,修改后,发现输入框拿到的data里的searchMap.keyWord,依旧是"双向绑定"



接着,再修改下面输入框的值,这是双向绑定的,修改后,单向绑定的输入框拿到的值也变了,data里的searchMap.keyWord的值被修改了。

三、v-on 绑定事件

v-on指令可以绑定事件,比如说click,点击事件。

... ...
<body>
<div id="app">
<!-- v-model 可以进行双向的数据绑定 -->
<input type="text" v-model="searchMap.keyWord">
<!-- v-on 指令绑定事件,click指定绑定的事件类型,事件发生时调用vue中methods节点中定义的方法 -->
<button v-on:click="search()">查询</button>
</div>
<script src="vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
searchMap:{
keyWord: '点击查询按钮触发点击事件'
}
},
methods:{
search(){
console.log('触发点击事件')
}
}
})
</script>
</body>
... ...

查询按钮绑定了click事件v-on:click="search()",当点击按钮的时候会去调用vue里的search()方法。

console.log('触发点击事件'),浏览器F12查看console,可以看到输出内容。



v-on的简写是@:

<!-- v-on 指令的简写形式 @ -->
<button @click="search()">查询</button>

四、修饰符 .

修饰符是以半角句号.指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。

例如,.prevent修饰符告诉v-on指令对于触发的事件调用onSubmitForm(),并非执行submit的提交,

这就是阻止了事件原本的默认行为。

<body>
<div id="app">
<form action="save" v-on:submit.prevent="onSubmitForm">
<input type="text" id="name" v-model="user.username"></input>
<button type="submit">保存</button>
<!-- 现在希望实现点击保存时候,表单不提交,而且走我们自定义的方法 -->
</form>
</div>
<script src="vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
user: {}
},
methods: {
onSubmitForm() {
if (this.user.username) {
console.log('执行自定义方法')
} else {
alert('请输入用户名')
}
}
}
})
</script>
</body>

点击保存按钮,就可以看到效果。



实际使用不多,了解就好。

五、v-if 条件指令

其实就是if else的用法,只不过这是在页面里使用的。

比如页面里写个判断,勾选、不勾选的时候分别显示不同的内容:

... ...
<body>
<div id="app">
<input type="checkbox" v-model="ok">是否勾选
<!-- v:if条件指令:还有v-else、v-else-if -->
<h1 v-if="ok">勾选时展示</h1>
<h1 v-else>不勾选时展示</h1>
</div>
<script src="vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
ok: false
}
})
</script>
</body>
... ...

不勾选时,

勾选时,

六、v-show 条件指令

v-show完成和上面v-if相同的功能。

    <h1 v-show="ok">勾选时展示</h1>
<h1 v-show="!ok">不勾选时展示</h1>

区别在于:

v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。

如果需要非常频繁地切换,则使用 v-show 较好;

如果在运行时条件很少改变,则使用 v-if 较好。

七、v-for 列表循环指令

for循环都很熟悉了,在这里也一样用,可以循环遍历一个列表,把列表里的元素都给遍历出来。

需要的话也可以带上index,元素的索引,从0开始。

比如uselist里有3个对象,可以通过for循环拿到列表里没一个对象的字段值。

... ...
<body>
<div id="app">
<table>
<!-- <tr v-for="item in userList"></tr> -->
<tr v-for="(user, index) in userList">
<td>{{index}}</td>
<td>{{user.id}}</td>
<td>{{user.username}}</td>
<td>{{user.age}}</td>
</tr>
</table>
</div>
<script src="vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
userList: [
{ id: 1, username: '大周', age: 38 },
{ id: 2, username: '胖洪', age: 28 },
{ id: 3, username: '小毛', age: 18 }
]
}
})
</script>
</body>
... ...



4列分别对应 index、id、username、age

最新文章

  1. 我理解的MVC
  2. C#中out和ref之间的区别【转】
  3. Java 读写图像
  4. hdu 3333 树状数组
  5. 为ubuntu只带的network-manager添加latp/ipsec VPN
  6. oc ios 中文字符串 进行 sha1加密 错误?
  7. jackson的简单使用(可转xml)
  8. HDU 2962 Trucking
  9. 获取sina,baidu,google财经历史和实时股票数据接口
  10. JavaScript 中的内存和性能、模拟事件(读书笔记思维导图)
  11. 《实战Nginx》读书笔记
  12. sublime text3插件解决输入法不跟随的问题
  13. C语言面试题大汇总之华为面试题 Eddy整理
  14. 读spring源码(三)-ClassPathXmlApplicationContext-getBean
  15. Bootstrap各种进度条的实例讲解
  16. mysql数据库的基本操作命令总结
  17. Broadcom BCM94352z/DW1560驱动新姿势
  18. Python GUI 编程
  19. [smarty] 在smarty模板中使用smarty变量初始化 javascript 变量的问题
  20. sql 获取列名

热门文章

  1. 【Usaco 2009 Gold】JZOJ2020年9月19日提高B组T4 过路费
  2. go语言小知识点
  3. Mongo小结
  4. .Net Core JWT 动态设置接口与权限
  5. 第3.5节 丰富的Python字典操作
  6. 第15.17节 PyQt(Python+Qt)入门学习:PyQt图形界面应用程序的事件捕获方法大全及对比分析
  7. PyQt学习随笔:通过自定义类重写QApplication的notify方法捕获应用的所有消息
  8. 开源版本Visifire的应用
  9. VMware-workstation-full-10.0.4安装
  10. buu学习记录(上)