Vue概念:vue是mvvm模式的,直接操作dom开销较大,先获取dom,修改里边的内容,但是用vue的话,直接视图和模型绑定,不管是视图的数据发生改变还是模型的数据发生改变,其都是关联的,不需要直接操作dom,效率更高。

一.Vue的简单使用例子:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8 </head>
 9 <body>
10     <div id="app">
11         {{message}}
12     </div>
13 </body>
14 <script src="../vue2.4.4.js"></script>
15 <script>
16     //如果要使用vue需要创建一个新的vm对象
17     var vm = new Vue({
18         //要操作的dom元素
19         el: "#app",
20         //提供数据
21         data: {
22             message: "小追命又回来了"
23         }
24         //如果要使用vue来操作视图需要使用vue内置的一些系统指令:
25         //  {{ 属性 }}    输出
26     });
27 </script>
28 </html>

二.基本输出指令

1.{{}}

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8 </head>
 9 <body>
10     <div id="app">
11         <p>姓名:{{name}}</p>
12         <p>年龄:{{age + 1}} ----- {{ age>=18?"成年":"未成年"}} </p>
13         <!-- 如果大于18说明成年,如果小于18说明未成年 -->
14     </div>
15 </body>
16 <script src="vue2.4.4.js"></script>
17 <script>
18     //如果要使用vue需要创建一个新的vm对象
19     var vm = new Vue({
20         //要操作的dom元素
21         el: "#app",
22         //提供数据
23         data: {
24             name: "小追命",
25             age: 18
26         }
27         //如果要使用vue来操作视图需要使用vue内置的一些系统指令:
28         //  {{ 属性 }}    输出
29         //  输出指令只能输出内容不能加入一些判断:if for语句
30     });
31 </script>
32 </html>

2.v-text和v-html指令

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8 </head>
 9 <body>
10      <div id="app">
11        <!-- v-text:可以给元素设置一些文本值,会将字符串原样输出 -->
12        <div v-text="msg1"> </div>
13        <!-- v-html 可以给元素设置一些文本值,会将标签解析为dom元素-->
14        <div v-html="msg2"> </div>
15      </div>
16 </body>
17 </html>
18 <script src="vue2.4.4.js"></script>
19 <script>
20     var vm = new Vue({
21         el:"#app",
22         data:{
23            msg1:"<h1>小追命v-text</h1>",
24            msg2:"<h1>小追命v-html</h1>",
25         }
26     });
27 </script>

3.v-cloak和提前加载vue.js取消元素的闪速的效果

闪烁:由于浏览器先加载dom结构

解决方法:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <style>
 9         /* 方法2: */
10         [v-cloak]{
11             display: none;
12         }
13     </style>
14     <!-- 防止页面闪烁方法1 -->
15     <!-- <script src="vue2.4.4.js"></script>  -->
16 </head>
17 <body>
18      <div id="app">
19          <!-- 方法2: -->
20         <span v-cloak> {{name}}</span>
21         <!-- cloak 解决闪烁原理:就是在加载vue代码之前这个元素先让它在页面上隐藏起来,
22             等到vue加载成功以后才会将元素显示出来 -->
23      </div>
24 </body>
25 </html>
26 <script src="vue2.4.4.js"></script>
27 <script>
28     var vm = new Vue({
29         el:"#app",
30         data:{
31             name:"小追命"
32         }
33     });
34 </script>

4.v-mode和v-bind实现双向数据绑定

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8 </head>
 9 <body>
10      <div id="app">
11          <!--
12              1. 如果要给文本框设置属性最好使用:v-model属性来设置
13              2. 可以让文本框中的数据实行双向绑定
14         -->
15         <input type="text" title="帅帅的" v-model="name">
16         <span v-text="name"></span>
17         <!-- v-mode 和v-bind要一起才能实现数据双绑定
18             为了其它的属性也依赖于name属性我们需要学习新的指令:v-bind
19          -->
20         <input type="text" v-bind:title="name" v-model="name">
21         <!--
22             v-bind可以简写 ":"  号
23          -->
24          <input type="text" :title="name" v-model="name">
25          <!-- <a v-bind:href="del?id=id" >删除元素</a> 这样两个id 是不行的 -->
26          <a v-bind="{href:'del?id='+id}">删除元素</a>
27         </div>
28 </body>
29 </html>
30 <script src="vue2.4.4.js"></script>
31 <script>
32     var vm = new Vue({
33         el:"#app",
34         data:{
35             id:2,
36             name:"帅帅的"
37         }
38     });
39 </script>

5.v-for遍历数组、对象数据

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8     <!-- 解决闪烁问题 -->
 9     <script src="vue2.4.4.js"></script>
10 </head>
11 <body>
12     <div id="app">
13         <ul >
14             <!--
15
16                 v-for遍历数据:
17                 v-for可以用来遍历数组,item 是遍历的项 index是下标
18                 在vue1.0版本中index是放在item之前的
19                 在vue2.0版本中index是放在item之后的
20
21             -->
22             <li v-for="(item,index) in arr" ::key="index">{{item}}-----------{{index}}</li>
23         </ul>
24
25
26
27         <!--
28         v-for遍历对象
29         参数右三个:
30             item:当前项
31             key:键
32             Index:下标
33         性能优化 :key="index"
34             作用: 告诉vue底层将来我的数组中有对象不应该将所有的数据都更新,
35                    只需要更新改变的那一条就行了
36             原因: 因为有了这个标识后,vue底层会给遍历生成的每一个元素添加一个唯一标识,将来只要与这个标识相关的数据发生了改变,
37             vue的底层会根据这个唯一的表示找到元素将里面的结构重新生成
38             注意: key与index关键字跟我们在遍历时出现的item index key没有任何关系,它仅仅只是vue一种优化标识
39          -->
40         <ul>
41             <li v-for="(item,key,index) in obj">
42                 {{item}}----------{{key}}---------{{index}}
43             </li>
44         </ul>
45     </div>
46 </body>
47 </html>
48
49 <script>
50     new Vue({
51         el:"#app",
52         data:{
53             arr:['追命',"无情","冷血","铁手"],
54             obj:{
55                 name:"追命",
56                 age:18,
57                 height:180
58             }
59         }
60     });
61 </script>

6.使用v-on给元素绑定事件

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8 </head>
 9 <body>
10      <div id="app">
11         <!-- 需求:点击按钮得到name中的属性 -->
12          <button v-on:click="getValue">点我得到数据v-on:</button>
13          <!-- 简写:直接去掉v-on:改为@ -->
14          <button @click="getValue">点我得到数据@</button>
15          <input type="text" v-model="name" @keydown="getRes($event)">
16          <input type="text" v-model="name" @keydown.13="getR()">
17      </div>
18 </body>
19 </html>
20 <script src="vue2.4.4.js"></script>
21 <script>
22     new Vue({
23         el:"#app",
24         data:{
25             name:"吴彦祖"
26         },
27         // 提供方法
28         methods:{
29             getValue:function(){
30                 // 这里面的this指的是vue对象
31                 alert(this.name);
32             },
33             getRes:function(ev){
34                 // keydown是当我们按下所有键的时候都会触发,我们应该判断只有按下enter键时才应该执行代码
35                 // 键盘上的每个键按下都会有一个keycode返回enter键的keycode是13
36                 if(ev.keyCode==13) {
37                     alert(this.name);
38                 }
39             },
40             getR:function(){
41                 alert(this.name);
42             }
43         }
44     });
45
46 </script>

7.v-if和v-show的区别和使用

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=div">
 6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 7     <title>Document</title>
 8 </head>
 9 <body>
10      <div id="app">
11          <!-- 需求: 通过按钮来控制v-show中的元素的显示与隐藏 -->
12          <button @click="showHide">点我显示/隐藏</button>
13          <!--
14               v-if可以用来控制元素是否显示:
15                 true 显示
16                 false 隐藏
17                 v-if隐藏会将元素 完全隐藏,用一个占位来进行占位
18
19           -->
20         <span v-if="ifValue" v-text="name"></span><br>
21         <!--
22               v-show可以用来控制元素是否显示:
23                 使用display:none;来隐藏元素
24          -->
25          <span v-show="showValue" v-text="name"></span>
26      </div>
27 </body>
28 </html>
29 <script src="vue2.4.4.js"></script>
30 <script>
31     new Vue({
32         el:"#app",
33         data:{
34             name:"ithaha",
35             ifValue:true,
36             showValue:true
37         },
38         methods:{
39             showHide:function() {
40                 this.showValue = !this.showValue;
41             }
42         }
43     });
44 </script>

三.完成品牌管理案例的删除和增加功能

  1 <!DOCTYPE html>
  2 <html lang="en">
  3
  4 <head>
  5     <meta charset="UTF-8">
  6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8     <title>Document</title>
  9     <style>
 10         #app {
 11             width: 600px;
 12             margin: 10px auto;
 13         }
 14
 15         .tb {
 16             border-collapse: collapse;
 17             width: 100%;
 18         }
 19
 20         .tb th {
 21             background-color: #0094ff;
 22             color: white;
 23         }
 24
 25         .tb td,
 26         .tb th {
 27             padding: 5px;
 28             border: 1px solid black;
 29             text-align: center;
 30         }
 31
 32         .add {
 33             padding: 5px;
 34             border: 1px solid black;
 35             margin-bottom: 10px;
 36         }
 37     </style>
 38 </head>
 39
 40 <body>
 41     <div id="app">
 42         <div class="add">
 43             编号: <input type="text" v-model="id">品牌名称: <input v-model="name" type="text">
 44             <button @click="add">添加</button>
 45         </div>
 46         <div class="add">品牌名称:<input type="text"></div>
 47         <div>
 48             <table class="tb">
 49                 <tr>
 50                     <th>编号</th>
 51                     <th>品牌名称</th>
 52                     <th>创立时间</th>
 53                     <th>操作</th>
 54                 </tr>
 55                 <tr v-if="list.length <= 0">
 56                     <td colspan="4">没有品牌数据</td>
 57                 </tr>
 58                 <!--加入: key="index" 时候必须把所有参数写完整  -->
 59                 <tr v-for="(item,key,index) in list" :key="index">
 60                     <td>{{item.id}}</td>
 61                     <td>{{item.name}}</td>
 62                     <td>{{item.ctime}}</td>
 63                     <!-- 使用vue来注册事件时,我们在dom元素中是看不到的 -->
 64                     <td><a href="javascript:void(0)" @click="del(item.id)">删除</a></td>
 65                 </tr>
 66             </table>
 67         </div>
 68
 69     </div>
 70 </body>
 71
 72 </html>
 73 <script src="vue2.4.4.js"></script>
 74 <script>
 75     var vm = new Vue({
 76         el: "#app",
 77         data: {
 78             id: 0,
 79             name: '',
 80             list: [
 81                 { "id": 1, "name": "it哈哈", "ctime": Date() },
 82                 { "id": 2, "name": "娃哈哈", "ctime": Date() }
 83             ]
 84         },
 85         methods: {
 86             add: function () {
 87                 //将id和namepush到list数组中
 88                 this.list.push({ "id": this.id, "name": this.name, "ctime": Date() });
 89             },
 90             del:function(id) {
 91
 92                 // 根据id得到下标
 93                 // 默认去遍历list集合,将集合中的每个元素传入到function的item里,
 94                 var index = this.list.findIndex(function(item){
 95                         //根据item中的id属性来判断这个item是否是上面id中
 96                         //对应的数据,如果是返回一个true ,否返回false,继续下面的一条数据的遍历,以此类推
 97                       return item.id ==id; //如果返回true,那么findIndex方法会将这个item对应的id返回到外接
 98                 });
 99                 // 根据下标在list集合中将对应的数据删除
100                 // splice(开始删除的下标,删除的长度)
101                 this.list.splice(index,1);
102             }
103         }
104     });
105
106 </script>

转载于:https://www.cnblogs.com/mrszhou/p/7844908.html

Vue--系统指令(基础)相关推荐

  1. vue自定义指令基础

    今天,我们讲讲vue自定义指令基础知识,主要包括指令如何创建,如何注册,以及指令的相关属性钩子函数. 指令的注册 我们通过以下方法注册一个全局自定义指令 Vue.directive(name,defi ...

  2. Vue系统指令(一)

    Vue系统指令(一) 插值表达式 {{}} v-cloak v-text v-html v-bind:属性绑定机制 v-on:事件绑定机制 `v-on:click`:点击事件 `v-on`的简写形式 ...

  3. Vue-基本语法和系统指令

    Vue最简单小例子演示使用步骤: 1.导入Vue文件: 2.创建Vue实例对象,设置属性(el.data等等): 3.使用模板语法把数据渲染到页面 <body><div id=&qu ...

  4. vue脚手架_基础API、Vue基本概念、vue-cli 脚手架、vue指令

    vue脚手架_基础API 安装:vue-devtools 学习和调试vue必备之利器 - 官方插件 安装: 打开Chrome浏览器 =>点击浏览器右上角小图标,按图示操作 2.进入扩展程序菜单 ...

  5. Vue基础——VueJS是什么、Vue的优缺点、vue2和vue3的模板区别、MVVM数据双向绑定、Vue的安装和使用、Vue模板语法-文本渲染、常用的vue的指令

    目录 一.VueJS是什么? 二.Vue的优缺点 三.MVVM 数据双向绑定 四.Vue的安装和使用 五.Vue模板语法-文本渲染 六.常用的vue的指令 一.VueJS是什么? 它是一个轻量级MVV ...

  6. 【Vue知识点- No2.】vue脚手架、基础API

    No2.vue脚手架.基础API 必安装-vue-devtools 搜索vue-devtools回车-然后添加至Chrome等待下载后自动安装-右上角显示已经添加即代表成功 vscode-插件补充 v ...

  7. Vue教程_基础(一)

    目录 章节 地址 Vue教程_tips https://blog.csdn.net/weixin_46349544/article/details/124082287 Vue教程_基础(一) http ...

  8. Vue.js 框架基础笔记

    Vue.js 框架基础笔记 1. Vue.js 基本概念 1.1 遇见 Vue.js 1.1.1 为什么要学习 Vue.js 1.1.2 前端开发的复杂化 1.1.3 Vue.js 特点 1.1.4 ...

  9. vue项目目录结构分析、过滤器、vue文件中基础template、script、style

    项目目录结构: 1.在一个项目中一般的目录结构为:my_project------------项目文件夹|____src--------------------------------存放人可以看懂的 ...

  10. Linux系统进阶-基础IO

    Linux系统进阶-基础IO 文章目录 Linux系统进阶-基础IO C语言中的文件接口 对文件进行写入 对文件进行读取 什么是当前路径 默认打开的三个流 stdout & stderr 系统 ...

最新文章

  1. NET中验证控件表达式汇总
  2. 5G技术与触觉互联网,一个全新的世界
  3. springer grammar revise tool
  4. Spring+Mybatis多数据源配置
  5. Spring主要用到两种设计模式
  6. LeetCode 430. 扁平化多级双向链表(DFS)
  7. android 读写文件 简书,Android10 文件操作适配
  8. Linux命令(二)
  9. java struts xml文件设置----自定义日期转换器(局部,及全局类型转换器类)
  10. 网页实现数据库表信息的CRUD操作
  11. 『尼罗河魅影之谜』的故事模式与推理内核
  12. M4A格式的ID3信息提取
  13. html 字体图标转换工具,HTML5 webfont字体图标的使用
  14. 配置OSPF负载分担
  15. c#文件名去掉后缀_C#如何从文件路径中分离出文件名以及文件扩展名
  16. 如何在滴滴云 DC2 上搭建 MySQL 服务
  17. LeetCode-SQL(八)
  18. 基于收敛加密的文件所有权证明协议——毛峥
  19. 广点通广告第一次点击落地页广告跳转失败,app退出
  20. 高德地图python爬虫 商家_Python爬虫练习:爬取高德地图地铁线路及站点数据

热门文章

  1. jsp中实现中文简繁体切换
  2. 【PHP】初学者开篇入门版
  3. 《顾客为什么购买》第一部分 购物学的奥秘
  4. python海龟库如何导入_Python 中的海龟绘图turtle函数库的详细使用方法
  5. 计算机专硕和学硕工作,研究生上完想直接工作,我该选择学硕还是专硕
  6. c语言isnumber函数用法,科技教程:ISNUMBER函数介绍及用法
  7. centos显示历史命令执行时间
  8. linux缓存写入文件,实验5Linux文件操作之带缓存和非缓冲文件的读写
  9. 注册时按钮上的时间倒计时
  10. 信息增益比 vs 信息增益