文件指令

<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. vue 项目的运行与 打包

    1.vue init webpack 2.npm install axios 3.npm run dev  运行项目 4.npm run build 打包项目 会生成一个dist 文件夹,我们只需要把 ...

  2. Delphi 安装Cnpack cnvcl后界面不断弹出 Memory Manager's list capablity overflow ,please enlarge it!

    Delphi 安装Cnpack cnvcl后界面不断弹出 Memory Manager's list capablity overflow ,please enlarge it! 解决方法:删除指定  ...

  3. 【Http2.0】Http2.0

    序言 目前HTTP/2.0(简称h2)已经在广泛使用(截止2018年8月根据Alexa流行度排名的头部1千万网站中,h2占比约29%,https://w3techs.com/technologies/ ...

  4. 1,MySQL常用函数

    一,MySQL聚合函数 1,AVG()函数 AVG()函数是一个聚合函数,它用于计算一组值或表达式的平均值. AVG()函数的语法如下: AVG(DISTINCT expression) 例如有如下p ...

  5. zenoss(智能监控软件)

    Zenoss Core是开源企业级IT管理软件-是智能监控软件,他允许IT管理员依靠单一的WEB控制台来监控网络架构的状态和健康度,同时也是开源的网络与系统管理软件.全名          Zenos ...

  6. DZY Loves Math

    DZY Loves Math 对于正整数 $n$,定义 $f(n)$ 为 $n$ 所含质因子的最大幂指数. 例如 $f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, ...

  7. spring boot 修改banner

    在resources目录下新建一个banner.txt,里面添加要显示的内容,如: ////////////////////////////////////////////////////////// ...

  8. 103、Linux 编译 Kaldi 语音识别工具

    由于这个开源的语音识别工具Kaldi只能在Linux下面成功编译, 所以这一小节来写如何成功地在Linux下面编译Kaldi工具 (1)第一步,去github 上面把 Kaldi下载下来 git cl ...

  9. linux shell assemble PDF文件

      daniel@daniel-mint ~/latex/linux/itext/daniel $ cat asm.sh header_start=0 header_len=15 xref_start ...

  10. UVA12589_Learning Vector

    大致题意: 有n个向量要你选k个,把这k个向量连起来,画出来的与x轴围成的面积最大 思路: 这个是斜率dp,让斜率大的排在前面,记忆化搜索的时候要加入一个当前高的信息,因为这个向量形成面积不仅和斜率有 ...