文件指令

<body>
   <div id="app">
       <!-- 1) 插值表达式 -->
       <p>{{ msg }}</p>
       <p>{{ 1 + 2 * 3 + '条' + msg }}</p>
       <!-- 2) v-text -->
       <p v-text="msg"></p>
       <p v-text="'msg'"></p>
       <!-- 3) v-html:能解析html代码语法 -->
       <p v-text="html_msg"></p>
       <p v-html="html_msg"></p>
       <!-- 4) v-once:结合插值表达式来使用,变量值一旦被初始化赋值后就不会再改变 -->
       <input type="text" v-model="val">
       <p>{{ val }}</p>
       <p v-text="val"></p>
       <p v-html="val"></p>
       <p v-once>{{ val }}</p>
   </div>
</body>
<script src="js/vue.min.js"></script>
<script>
   new Vue({
       el: '#app',
       data: {
           msg: '你是p',
           html_msg: '<b>html语法代码是否解析</b>',
           val: '000'
      }
  })
</script>

属性指令

# 1.v-bind:属性名="变量"
# 2.简写=> :属性名="变量"
# 3.:class="变量" | :class="{类名:is_able}" | :class="[类1变量, ..., 类n变量,]"
<head>
   <meta charset="UTF-8">
   <title>属性指令</title>
   <style>
       .cls_a {
           width: 200px;
           height: 200px;
           background-color: yellowgreen;
      }
       .cls_b {
           text-align: center;
           line-height: 200px;
           border-radius: 50%;
      }
   </style>
</head>
<body>
   <!-- 属性指令:v-bind -->
   <div id="app">
       <!-- 1) 自定义属性绑定变量 -->
       <p v-bind:abc="a"></p>

       <!-- 2) title属性 -->
       <p title="鼠标悬浮的文本提示">这是一个p段落</p>
       <p v-bind:title="my_title">这是一个p段落</p>

       <!-- 3) class属性 -->
       <!-- 重点:v-bind: 可以简写为 : -->
       <!-- my_class可以被任意赋值 -->
       <p :class="my_class">这是一个p段落</p>

       <!--{类名:类是否起作用, ...} 类是否起作用 写的是变量,变量的值为true或false-->
       <!--应用场景:通过一个变量真假控制一个类名是否起作用-->
       <p :class="{x:1, y:0, z:is_able}">这是一个p段落</p>

       <!--[类名1, ..., 类名n]: 多类名,每一个类名既可以是字符串常量也可以是变量-->
       <p :class="[o, p, q, 'oqp']">这是一个p段落</p>

       <!--多类名综合使用-->
       <p :class="[o, p, q, 'oqp', {k: true}, {h: false}]">这是一个p段落</p>


       <!-- 4) style属性 -->
       <p :style="my_style">这是一个p段落</p>
       <p :style="{color: 'red', backgroundColor: yellow}">这是一个p段落</p>
       
   </div>
</body>
<script src="js/vue.min.js"></script>
<script>
   new Vue({
       el: '#app',
       data: {
           a: 'A',
           my_title: '鼠标悬浮的文本提示',
           my_class: 'cls_a cls_b',
           is_able: true,
           o: 'O',
           p: 'P',
           q: 'Q',
           my_style: {
               color: 'red',
               // 'font-size': '30px'
               fontSize: '30px'
          },
           yellow: 'greenyellow'
      }
  })
</script>

事件指令

# 指令:v-on:事件名="方法变量"
# 简写:@事件名="方法变量"
# 简写:@事件名="方法变量()" => 不是方法的调用,而是用于传参
# 简写:@事件名="方法变量('普通参数', $event)" => $event是事件参数,可以通过它得到鼠标点击的相关信息
<body>
   <!-- 指令:v-on:事件名="变量" -->
   <!-- 简写:@事件名="变量" -->
   <div id="app">
       <p v-on:click="fn1" :style="{color: m_c}">{{ msg }}</p>
       <p @mouseover="fn2" @mouseleave="fn3" @mousedown="fn4" @mouseup="fn5">{{ msg }}</p>


       <!--事件需要参数时-->
       <!-- 注意:事件绑定 方法名() 等价 方法名,不能调用方法,而是作为传参的标志 -->
       <p @click="func('abc')">{{ msg }}</p>

       <!--类别django传参的应用场景,可以标识具体点击的是哪个li-->
       <!--{% for %}-->
       <!--<li @click="func({{forloop.index}})"></li>-->
       <!--{% end for%}-->


       <!--传入事件对象-->
       <p @click="func1($event)">{{ msg }}</p>
   </div>
</body>
<script src="js/vue.min.js"></script>
<script>
   new Vue({
       el: '#app',
       data: {
           msg: '你是p',
           m_c: 'red'
      },
       methods: {
           func1: function (ev) {
               console.log(ev);
               // 数据点击页面的点击点
               console.log(ev.clientX);
               console.log(ev.clientY);
          },
           func: function (txt) {
               this.msg = txt
          },
           fn1: function () {
               if (this.m_c == 'red') {
                   this.m_c = 'blue'
              } else {
                   this.m_c = 'red'
              }
          },
           fn2: function () {
               this.msg = '鼠标悬浮了'
          },
           fn3: function () {
               this.msg = '鼠标离开了'
          },
           fn4: function () {
               this.msg = '鼠标按下了'
          },
           fn5: function () {
               this.msg = '鼠标抬起了'
          }
      }
  })
</script>

表单事件

<body>
   <div id="app">
       <!-- 指令:v-model="变量" -->
       <form action="" method="get">
           <!-- 1) 数据的双向绑定 -->
           <input type="text" v-model="msg" name="usr">
           <input type="password" v-model="msg" name="pwd">
           <!-- 2) 单选框: value必须设置初值,v-model变量值要与单选框的value值统一 -->
           <p>
              男:<input type="radio" name="sex" value="male" v-model="sex_val">
              女:<input type="radio" name="sex" value="female" v-model="sex_val">
           </p>
           <!--3)单一复选框-->
           <p>
               <!-- v-model绑定的变量值与true-value|false-value统一 -->
               <!-- true-value|false-value默认值为 true | false -->
              是否同意条款:<input type="checkbox" name="agree" v-model="agree_val"
                             true-value="同意" false-value="不同意">
           </p>
           <!-- 4) 多复选框 -->
           <!-- v-model绑定的变量是存放多复选框value的数组(列表) -->
           <p>
              爱好:
               <input type="checkbox" value="喜好男的" name="cless" v-model='more_val' />
               <input type="checkbox" value="喜好女的" name="cless" v-model='more_val' />
               <input type="checkbox" value="不挑" name="cless" v-model='more_val' />
           </p>

           <button type="submit">提交</button>
       </form>
   </div>
</body>
<script src="js/vue.min.js"></script>
<script>
   new Vue({
       el: '#app',
       data: {
           msg: '',
           sex_val: 'female',  // 默认value="female"的单选框被选中
           agree_val: '不同意',
           more_val: ['喜好男的', '喜好女的']
      }
  })
</script>

条件指令

<head>
   <meta charset="UTF-8">
   <title>文本指令</title>
   <style>
       .box {
           width: 200px;
           height: 100px;
           background-color: darkgray;
      }
       .pg1 { background-color: red; }
       .pg2 { background-color: yellow; }
       .pg3 { background-color: blue; }
   </style>
</head>
<body>
   <div id="app">
       <!-- v-if与v-show的变量值都是bool,控制着显隐 -->
       <!-- v-if隐藏时标签不被渲染,v-show隐藏时标签渲染,用display:none来隐藏 -->
       <!-- 特殊属性key是vue在内存中建立缓存的标志, 来优化渲染的效率 -->
       <p v-if="is_if" key="my_if">v-if的显示与隐藏</p>
       <p v-show="is_show" key="my_show">v-show的显示与隐藏</p>


       <p>
           <button @click="btn_click('pg1')">红</button>
           <button @click="btn_click('pg2')">黄</button>
           <button @click="btn_click('pg3')">蓝</button>
           <div class="box pg1" v-if="pg == 'pg1'" key="pg1"></div>
           <div class="box pg2" v-else-if="pg == 'pg2'" key="pg2"></div>
           <div class="box pg3" v-else key="pg3"></div>
       </p>
   </div>
</body>
<script src="js/vue.min.js"></script>
<script>
   new Vue({
       el: '#app',
       data: {
           is_if: true,
           is_show: true,
           pg: 'pg1'
      },
       methods: {
           btn_click: function (pg_num) {
               this.pg = pg_num
          }
      }
  })
</script>

循环指令

<head>
   <meta charset="UTF-8">
   <title>文本指令</title>
   <style>
       p {
           padding-left: 30px;
      }
   </style>
</head>
<body>
   <div id="app">
       <p>{{ array[1] }}</p>
       <p>{{ person['age'] }}</p>
       <div>循环array</div>
       <p v-for="v in array">{{ v }}</p>

       <div>带索引循环array</div>
       <p v-for="(v, i) in array">{{ v }}索引是{{ i }}</p>

       <div>循环dict</div>
       <p v-for="v in person">{{ v }}</p>

       <div>带key循环dict</div>
       <p v-for="(v, k) in person">{{ v }}键是{{ k }}</p>

       <div>带key带索引循环dict</div>
       <p v-for="(v, k, i) in person">{{ v }}键是{{ k }}索引是{{ i }}</p>

       <ul v-for="person in persons">
           <!--{{ person }}-->
           <li v-for="(v, k) in person">{{ k }}: {{ v }}</li>
       </ul>

   </div>
</body>
<script src="js/vue.min.js"></script>
<script>
   new Vue({
       el: '#app',
       data: {
           array: ['iso', 'android', 'winPhone'],
           person: {'name': 'Jobs', 'age': 88, 'gender': '男'},
           persons: [
              {'name': 'Jason', 'age': 58},
              {'name': 'Jerry', 'age': 68},
              {'name': 'Owen', 'age': 17},
          ]
      }
  })
</script>

前端array的操作

<script>
   arr = [1, 2, 3, 4, 5];
   console.log(arr);
   // 从index开始往后操作length长度,替换为args
   // arr.splice(index, length, args);
   // arr.splice(2, 3, 9, 9); // [1, 2, 9, 9] 替换
   // arr.splice(2, 3); // [1, 2] 删除
   arr.splice(2, 0, 8);  // [1, 2, 8, 3, 4, 5] 插入
   console.log(arr);
</script>

留言案例

<body>
   <div id="app">
       <input type="text" v-model="txt">
       <button @click="send_msg">留言</button>
       <ul>
           <li v-for="(msg, i) in msg_arr" @click="delete_msg(i)">{{ msg }}</li>
       </ul>
   </div>
</body>
<script src="js/vue.min.js"></script>
<script>
   new Vue({
       el: '#app',
       data: {
           txt: '',
           // msg_arr: ['初始留言1', '初始留言2']
           msg_arr: []
      },
       methods: {
           send_msg: function () {
               // this.txt
               // this.msg_arr
               if (this.txt) {
                   this.msg_arr.push(this.txt);
                   this.txt = ''
              }
          },
           delete_msg: function (index) {
               this.msg_arr.splice(index, 1)
          }
      }
  })
</script>

Vue 之指令篇的更多相关文章

  1. vue之指令篇 ps简单的对比angular

    这两天在开始vue的大型项目,发现和ng还是有许多不同,这里对比下两者的指令系统 难度系数:ng的指令难度大于vue:至少vue上暂时没发现@&=:require,compile,precom ...

  2. vue学习指南:第二篇(详细Vue基础) - Vue的指令

    一. Vue 的介绍 1. vue是一个 mvvm 的框架.(面试官经常会问的),angular 是 mvc的框架. 2. vm 是 vum 的实例,这个实例存在计算机内存中,主要干两件大事: 1. ...

  3. Vue.js 源码分析(二十三) 指令篇 v-show指令详解

    v-show的作用是将表达式值转换为布尔值,根据该布尔值的真假来显示/隐藏切换元素,它是通过切换元素的display这个css属性值来实现的,例如: <!DOCTYPE html> < ...

  4. Vue.js 源码分析(二十二) 指令篇 v-model指令详解

    Vue.js提供了v-model指令用于双向数据绑定,比如在输入框上使用时,输入的内容会事实映射到绑定的数据上,绑定的数据又可以显示在页面里,数据显示的过程是自动完成的. v-model本质上不过是语 ...

  5. Vue.js 源码分析(十九) 指令篇 v-html和v-text指令详解

    双大括号会将数据解释为普通文本,而非 HTML 代码.为了输出真正的 HTML,你需要使用 v-html 指令,例如: <!DOCTYPE html> <html lang=&quo ...

  6. Vue.js 源码分析(十六) 指令篇 v-on指令详解

    可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码,例如: <!DOCTYPE html> <html lang="en"& ...

  7. Vue.js 源码分析(十五) 指令篇 v-bind指令详解

    指令是Vue.js模板中最常用的一项功能,它带有前缀v-,比如上面说的v-if.v-html.v-pre等.指令的主要职责就是当其表达式的值改变时,相应的将某些行为应用到DOM上,先介绍v-bind指 ...

  8. Vue自定义指令使用场景

    当你第一次接触vue的时候,一定会使用到其中的几个指令,比如:v-if.v-for.v-bind...这些都是vue为我们写好的,用起来相当的爽.如果有些场景不满足,需要我们自己去自定义,那要怎么办呢 ...

  9. vue 自定义指令的魅力

    [第1103期]vue 自定义指令的魅力 点点 前端早读课 2017-11-08 前言 很多事情不能做过多的计划,因为计划赶不上变化.今日早读文章由富途@点点翻译分享. 正文从这开始- 在你初次接触一 ...

随机推荐

  1. Codeforces 814C - An impassioned circulation of affection

    原题链接:http://codeforces.com/contest/814/problem/C 题意:有长度为n的一个字符串,q个询问,每个询问由数字m和字符c组成,问最多在字符串中替换m个字符,使 ...

  2. paper 161:python的Json数据解析

    概念 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON.XML等.反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态 ...

  3. python 对 excel 的操作

    参考:https://www.php.cn/python-tutorials-422881.html  或 https://blog.51cto.com/wangfeng7399/2339556(使用 ...

  4. 原生 js 实现 vue 的某些功能

    1.数据双向绑定:https://www.cnblogs.com/yuqing-o605/p/6790709.html?utm_source=itdadao&utm_medium=referr ...

  5. VMWARE ESXI 虚拟硬盘的格式:精简置备、厚置备延迟置零、厚置备置零

    精简置备(thin): 精 简配置就是无论磁盘分配多大,实际占用存储大小是现在使用的大小,即用多少算多少.当客户机有输入输出的时候,VMkernel首先分配需要的空间并进行 清零操作,也就是说如果使用 ...

  6. Java +selenium Navigation接口介绍

    Navigation接口主要实现对浏览器的前进.后退.打开网址.刷新当前页面等操作的. void back():就是操作当前页面后退,相当于网页的后退按钮. void forward():就是操作当前 ...

  7. Android深度探索-卷1第二章心得体会

    这章介绍了搭建Android开发环境的的搭建,主要是在Linux上搭建Android开发环境总体来说因为都是在Linux下开发的,so,只介绍了在Linux环境下的搭建在搭建过程中全是命令操作,和Wi ...

  8. UVA10271_Chopsticks

    Chopsticks 大致就是有一堆筷子,知道了他们的长度,现在选长度为abc的三个筷子a<=b<=c为一对筷子,质量为(a-b)平方,现在选k双这样的筷子,求质量最小 思路: 第一次看到 ...

  9. 利用Graphziv帮助理解复杂的类层次关系

    最近在学习osg三维视景仿真平台,学习的过程中涉及到许多的类与类之间的继承和包含关系.在复杂点的例子中,许多的类和节点组合在一起,很容易让人迷失方向.在编译源代码的时候,无意间发现了Graphviz这 ...

  10. 使用 内置函数strtok()函数实现 loadrunner 字符串替换

    Action(){ /* loadrunner 字符串替换 */ char separators[] = "/"; char * token; char * file_path; ...