vue基础

VUE

vue安装完后 进入项目目录 

 

 

 

 

 

模板语法

Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。

Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。

就是绑定new Vue里面的 data{ }里面内容

文本 v-text

Html v-html 用于输出html代码

 <p v-html="msg"></p>
  vue实例里面 data : {
                msg : "<h1>这是一个h1元素内容</h1>"
            }

会自动解析标签属性,而v-text不会

属性   v-bind :属性名 绑定这个属性,对应的值去vue数据里面找

我们可以给v-bind:class 一个对象,以动态地切换class。注意:v-bind:class指令可以与普通的class特性共存

 比如
<div class="abc" v-bind:class="{'class1': use}">
vue data里面内容
{
ues:true ; //如果为false 就是不给div添加class class1,true就是给div加上class1
}

表达式 

Vue.js 都提供了完全的 JavaScript 表达式支持。 

<div v-bind:id="'list-' + id">菜鸟教程</div>

指令

指令是带有 v- 前缀的特殊属性。

指令用于在表达式的值改变时,将某些行为应用到 DOM 上

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
    <p v-if="seen">现在你看到我了</p> 
//这里, v-if 指令将根据表达式 seen 的值(true 或 false )来决定是否插入 p 元素。
<template v-if="ok"> <h1>菜鸟教程</h1> <p>学的不仅是技术,更是梦想!</p> <p>哈哈哈,打字辛苦啊!!!</p> </template> </div> <script> new Vue({ el: '#app', data: { seen: true, ok: true } }) </script> </body> </html>

 参数在指令后以冒号指明 例如, v-bind 指令被用来响应地更新 HTML 属性

 

用户输入

在 input 输入框中我们可以使用 v-model 指令来实现双向数据绑定,v-model 指令用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值

<div id="app">
    <p>{{ message }}</p>
    <input v-model="message">//表单上的值,会自动更新绑定的元素值
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
    message: 'Runoob!'
  }
})
</script>

 

按钮的事件我们可以使用 v-on 监听事件,并对用户的输入进行响应。

以下实例在用户点击按钮后对字符串进行反转操作:

<div id="app">
    <p>{{ message }}</p>
    <button v-on:click="reverseMessage">反转字符串</button>
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
    message: 'Runoob!'
  },
  methods: {
    reverseMessage: function () {
      this.message = this.message.split('').reverse().join('')//先把每个字符切割,再反转,再把每个字符拼接
    }
  }
})
</script>

 

过滤器

过滤器是对即将显示的数据做进一步的筛选处理,然后进行显示,值得注意的是过滤器并没有改变原来的数据,只是在原数据的基础上产生新的数据。

vue.filter 全局过滤器

局部就是写在 new Vue{ }里面

过滤器使用的地方

<!-- 在双花括号中 -->
<div>{{数据属性名称 | 过滤器名称}}</div>
<div>{{数据属性名称 | 过滤器名称(参数值)}}</div>
<!-- 在 `v-bind` 中 -->
<div v-bind:id="数据属性名称 | 过滤器名称"></div>
<div v-bind:id="数据属性名称 | 过滤器名称(参数值)"></div>

 

实例 

<div id="app">
    <span>{{msg|capitalize}}</span>//data中声明msg:'hello'
</div>
//全局过滤器,将信息转成大写
  Vue.filter('capitalize', function (value) {
    //value是|管道符左边那个属性值
    return value.toUpperCase() //返回大写字母
  })

 

传递多个参数

<div id="app">
    <!--过滤器接收多个参数-->
    <span>{{value1|multiple(value2,value3)}}</span>
</div>
<script>
  var vm = new Vue(
    {
      el: '#app',
      data: {
        msg: 'hello',
        value1:10,
        value2:20,
        value3:30
      },
    //局部过滤器
      filters: {
        'multiple': function (a, b, c)//这里的a,b,c是指的|那传的值。 
        {
return a*b*c } } } ) </script>

 

缩写

vue为两个最常用命令提供了缩写

v-bind =》: 比如

<a v-bind:href="url"></a> ==>   <a :href="url"></a> 

v-on =>@

<a v-on:click="doSomething"></a>  =>   <a @click="doSomething"></a>

条件与循环

条件判断  v-if  v-else v-else-if 

跟js的判断差不多,差别是="false"的时候会隐藏元素,=true的时候会展示元素 ,值可以从new Vue的data里面找

<div id="app">
    <div v-if="type === 'A'">
      A
    </div>
    <div v-else-if="type === 'B'">
      B
    </div>
    <div v-else-if="type === 'C'">
      C
    </div>
    <div v-else>
      Not A/B/C
    </div>
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
    type: 'C'
  }
})
</script>

 v-show 

根据指令来展示元素

<h1 v-show="ok">Hello!</h1>

循环语句

循环使用 v-for 指令。

v-for 指令需要以 site in sites 形式的特殊语法, sites 是源数据数组并且 site 是数组元素迭代的别名。

v-for 可以绑定数据到数组来渲染一个列表:

 

循环语句 

v-for 指令需要以 site in sites 形式的特殊语法, sites 是源数据数组并且 site 是数组元素迭代的别名

for 在标签内的话 循环几次 标签内容就会输出几次

  比如
<template v-for="site in sites">
    <li>{{ site.name }}</li>
    <li>--------------</li>
  </template>
for 循环3次的话 就会有6个li,因为template里面两个li,循环三次。6个

 

v-for 可以绑定数据到数组来渲染一个列表:

<div id="app">
  <ol>
    <li v-for="sitea in sites"> //源数据数组的第一个参数是键值,第二个参数是键名,第三个是索引 只有一个参数就是键值
      {{ sitea.name }}
    </li>
  </ol>
</div>
 
<script>
new Vue({
  el: '#app',
  data: {
    sites: [
      { name: 'Runoob' },
      { names: 'Google' },
      { name: 'Taobao' }
    ]
  }
})
</script>
//1.Runoob
   2.
   3.TaoBao

 

v-for  site in sites 参数

site源数据数组的第一个参数是键值,第二个参数是键名 第三个参数是索引 是可以随便取名的

sites是new Vue里面data,里面的数据名

 <body>

<div id="app">
  <ul>
    <li v-for="(aaa, bbb,ccc) in object">
    {{ bbb }} : {{ aaa }}:{{ccc}}
    </li>
  </ul>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    object: {
      name: '菜鸟教程',
      url: 'http://www.runoob.com',
      slogan: '学的不仅是技术,更是梦想!'
    }
  }
})
</script>
//输出
name : 菜鸟教程:0 url : http://www.runoob.com:1 slogan : 学的不仅是技术,更是梦想!:2

 循环整数 

<li v-for="n in 10"> {{ n }} </li>    输出10个li 内容从1到10

计算属性

在一个计算属性里可以完成各种复杂的逻辑,包括运算、函数调用等,只要最终返回一个结果就可以。除了上例简单的用法,计算属性还可以依赖多个 Vue 实例的数据,只要其中任一数据变化,计算属性就会重新执行,视图也会更新
  1. gettersetter 方法
    每一个计算属性都包含一个 getter 方法和一个 setter 方法。

  2. getter 将对象属性绑定到查询该属性时将被调用的函数
  3. 当尝试设置属性时set语法将对象属性绑定到要调用的函数。
  • 如果计算属性后面直接跟一个 function,使用的就是计算属性的默认方法 getter 来读取。例 展示两个购物车的物品总价:
computed: {
    prices: function(){
        var prices = 0
        for(let i=0; i<this.package.length; i++){
            prices += this.package[i].price * this.package[i].count
        } //this 指向vm实例
        return prices
    }
}

 

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.min.js"></script>
</head>
<body>
<div id="app">
  <p>{{ site }}</p>
</div>

<script>
var vm = new Vue({
  el: '#app',
  data: {
    name: 'Google',
    url: 'http://www.google.com'
  },
  computed: {
    site: {
      // getter
      get: function () {
        return this.name + ' ' + this.url
      },
      // setter
      set: function (newValue) {
        var names = newValue.split(' ')
        this.name = names[0]
        this.url = names[names.length - 1]  

//get 就是计算属性的getter set就是计算属性的sitter 名称不能更改 } } } }) // 调用 setter, vm.name 和 vm.url 也会被对应更新 vm.site = '菜鸟教程 http://www.runoob.com'; //当修改计算属性的值时,setter函数会被调用 document.write('name: ' + vm.name); document.write('<br>'); document.write('url: ' + vm.url); </script> </body> </html>
</body> </html>

 computed vs methods

我们可以使用 methods 来替代 computed,效果上两个都是一样的,但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用 methods ,在重新渲染的时候,函数总会重新调用执行。可以说使用 computed 性能会更好,但是如果你不希望缓存,你可以使用 methods 属性。

计算属性拿不到ref的值

定义一个变量,在mountd时变成true

 

 

 

监听属性

watch 我们可以通过 watch 来响应数据的变化。

<div id = "computed_props">
    千米 : <input type = "text" v-model = "kilometers">
    米 : <input type = "text" v-model = "meters">
测试watch :<input type ="text" v-model="abc"> </div> <p id="info"></p> <script type = "text/javascript"> var vm = new Vue({ el: '#computed_props', data: { kilometers : 0, meters:0,

}, //这里的watch 是监听 watch里面的所有属性的。 watch : { kilometers:function(val) { this.kilometers = val; this.meters = this.kilometers * 1000 }, meters : function (val) { this.kilometers = val/ 1000; this.meters = val;
},
abc:function(val){
console.log(val)
//在abc的input里面输入123,val参数就是改变后的值 这里监听到了abc改变,就会调用后面的 :function 输出123
} } });
// $watch 是一个实例方法 vm.$watch('kilometers', function (newValue, oldValue) { // 这个回调将在 vm.kilometers 改变后调用 document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue; }) </script>

$watch方法在用的时候主要是手动的监听一个对象,但对象发生变化时触发某个事件。

样式绑定

就是用 v-bind绑定class 选择样式 在new vue里面是true 就是添加class值 是false就是不添加

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
<style>
.base {
  width: 100px;
  height: 100px;
}

.active {
  background: green;
}

.text-danger {
  background: red;
}
</style>
</head>
<body>
<div id="app">
  <div v-bind:class="classObject"></div>
</div>
<script>

new Vue({
  el: '#app',
  data: {
    isActive: true,
    error: {
      value: true,
      type: 'fatal'
    }
  },
  computed: {
    classObject: function () {
   //这里的return 就是用来返回计算过的值得出 base:true,active:false,text-danger:true 
:为true的就会应用相应.class样式


return { base: true, active: this.isActive && !this.error.value, 'text-danger': this.error.value && this.error.type === 'fatal', } } } }) </script> </body> </html>

 

Vue.js style(内联样式)

<div id="app"> <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">菜鸟教程</div> </div>

:后面去 new vue 的data里面找值

也可以直接绑定到一个样式对象,让模板更清晰:

<div id="app">
  <div v-bind:style="styleObject">菜鸟教程</div>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    styleObject: {
      color: 'green',
      fontSize: '30px'
    }
  }
})

 

v-bind:style 可以使用数组将多个样式对象应用到一个元素上:

<div id="app">
  <div v-bind:style="[baseStyles, overridingStyles]">菜鸟教程</div>
</div>

 

事件处理器

事件监听可以使用 v-on指令

直接写命令
<div id="app"> <button v-on:click="counter += 1">增加 1</button> <p>这个按钮被点击了 {{ counter }} 次。</p> </div> <script> new Vue({ el: '#app', data: { counter: 0 } }) </script>

 

直接绑定到一个方法
<div id="app">
  <button v-on:click="say('hi')">Say hi</button>
  <button v-on:click="say('what')">Say what</button>
</div>
 
<script>
new Vue({
  el: '#app',
  methods: {
    say: function (message) {
      alert(message)
    }
  }
})
</script>

 

事件修饰符

.stop 阻止事件冒泡

.capture 使用事件捕获

.self 只当事件在该元素本身触发时,触发回调

.prevent 分事件情况

<!-- 阻止单击事件冒泡 -->
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修饰符可以串联  -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>
<!-- 添加事件侦听器时使用事件捕获模式 -->
<div v-on:click.capture="doThis">...</div>
<!-- 只当事件在该元素本身(而不是子元素)触发时触发回调 -->
<div v-on:click.self="doThat">...</div>

<!-- click 事件只能点击一次,2.1.4版本新增 -->
<a v-on:click.once="doThis"></a>

 键盘按键修饰符 .keyup

Vue 允许为 v-on 在监听键盘事件时添加按键修饰符:

<!-- 只有在 keyCode 是 13 时调用 vm.submit() -->
<input v-on:keyup.13="submit"
记住所有的 keyCode 比较困难,所以 Vue 为最常用的按键提供了别名:
全部的按键别名:

.enter
.tab
.delete (捕获 "删除" 和 "退格" 键)
.esc
.space
.up
.down
.left
.right
.ctrl
.alt
.shift
.meta

Vue.js表单

v-model双向绑定

 

v-model指令的本质是: 它负责监听用户的输入事件,从而更新数据,并对一些极端场景进行一些特殊处理。同时,v-model会忽略所有表单元素的value、checked、selected特性的初始值,它总是将vue实例中的数据作为数据来源。 然后当输入事件发生时,实时更新vue实例中的数据。


<div id="app">
  <p>单个复选框:</p>
  <input type="checkbox" id="checkbox" v-model="checked">
//checkbox勾上了,就为true v-model就会把true传给data里面 checked <label for="checkbox">{{ checked }}</label> <p>多个复选框:</p> <input type="checkbox" id="runoob" value="Runoob111" v-model="checkedNames">
//这里的复选框勾上后 就把value的值 传给data里面数组checkedNames <label for="runoob">Runoob</label> <input type="checkbox" id="google" value="Google222" v-model="checkedNames"> <label for="google">Google</label> <input type="checkbox" id="taobao" value="Taobao333" v-model="checkedNames"> <label for="taobao">taobao</label> <br> <span>选择的值为: {{ checkedNames }}</span> </div> <script> new Vue({ el: '#app', data: { checked : false, checkedNames: [] } }) </script>

 select列表

<body>
<div id="app">
  <select v-model="selected" name="fruit">
    <option value="">选择一个网站</option>
    <option value="www.runoob.com">Runoob</option>
    <option value="www.google.com">Google</option>  
//选中哪个列表 就会把列表的value传给v-model绑定
  </select>
 
  <div id="output">
      选择的网站是: {{selected}}
  </div>
</div>

 

v-model修饰符

在默认情况下, v-model 在 input 事件中同步输入框的值与数据,但你可以添加一个修饰符 lazy ,从而转变为在 change 事件中同步:

<!-- 在 "change" 而不是 "input" 事件中更新 -->
<input v-model.lazy="msg" >

.number自动转为number类型 如果转换结果为NaN,则返回原值。

.trim 自动过滤 用户输入首尾空格

 

Vue.js混入

混入 (mixins)定义了一部分可复用的方法或者计算属性。混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。

  <body>
<div id = "databinding"></div>
<script type = "text/javascript">
var vm = new Vue({
    el: '#databinding',
    data: {
    },
    methods : {
    },
});
// 定义一个混入对象
var myMixin = {
    created: function () {
        this.startmixin()
    },//created:  html加载完成之前,执行。执行顺序父组件-子组件
    methods: {
        startmixin: function () {
            document.write("欢迎来到混入实例");
        }
    }
};
var Component = Vue.extend({
    mixins: [myMixin]  //就是相当于合并了myMixin里面内容
})  //vue.extend用vue构造器,创建一个子类。参数是一个包含组件选项的对象
var component = new Component();
</script>
</div>
  </body>
</html>

 

选项合并

var mixin = {
    created: function () {
        document.write('混入调用' + '<br>')
    }
}
new Vue({
    mixins: [mixin],
        created: function () {
        document.write('组件调用' + '<br>')
    }
});
混入调用
组件调用

 

如果 methods 选项中有相同的函数名,则 Vue 实例优先级会较高。如下实例,Vue 实例与混入对象的 methods 选项都包含了相同的函数:

var mixin = {
    methods: {
        hellworld: function () {
            document.write('HelloWorld 方法' + '<br>');
        },
        samemethod: function () {
            document.write('Mixin:相同方法名' + '<br>');
        }
    }
};
var vm = new Vue({
    mixins: [mixin],
    methods: {
        start: function () {
            document.write('start 方法' + '<br>');
        },
        samemethod: function () {
            document.write('Main:相同方法名' + '<br>');
        }
    }
});
vm.hellworld();
vm.start();
vm.samemethod();
//HelloWorld 方法
start 方法
Main:相同方法名

 

全局混入

也可以全局注册混入对象。注意使用! 一旦使用全局混入对象,将会影响到 所有 之后创建的 Vue 实例。使用恰当时,可以为自定义对象注入处理逻辑。

谨慎使用全局混入对象,因为会影响到每个单独创建的 Vue 实例 (包括第三方模板)。

// 为自定义的选项 'myOption' 注入一个处理器。
Vue.mixin({
  created: function () {
    var myOption = this.$options.myOption
    if (myOption) {
      console.log(myOption)
    }
  }
})
 
new Vue({
  myOption: 'hello!'
})
// => "hello!"

响应接口

 Vue 可以添加数据动态响应接口。

例如以下实例,我们通过使用 $watch 属性来实现数据的监听,$watch 必须添加在 Vue 实例之外才能实现正确的响应。

实例中通过点击按钮计数器会加 1。setTimeout 设置 10 秒后计算器的值加上 20 。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script>
</head>
<body>
<div id = "app">
    <p style = "font-size:25px;">计数器: {{ counter }}</p>
    <button @click = "counter++" style = "font-size:25px;">点我</button>
</div>
<script type = "text/javascript">
var vm = new Vue({
    el: '#app',
    data: {
        counter: 1
    }
});
// nval新值 oval旧值 vm.$watch(
'counter', function(nval, oval) { alert('计数器值的变化 :' + oval + ' 变为 ' + nval + '!'); }); setTimeout( function(){ vm.counter += 20; },10000 ); </script> </body> </html>

 

Vue 不允许在已经创建的实例上动态添加新的根级响应式属性。

Vue 不能检测到对象属性的添加或删除,最好的方式就是在初始化实例前声明根级响应式属性,哪怕只是一个空值。

如果我们需要在运行过程中实现属性的添加或删除,则可以使用全局 Vue,Vue.set 和 Vue.delete 方法。

Vue.set

Vue.set 方法用于设置对象的属性,它可以解决 Vue 无法检测添加属性的限制,语法格式如下:

Vue.set( target, key, value )

参数说明:

  • target: 可以是对象或数组
  • key : 可以是字符串或数字
  • value: 可以是任何类型
<div id = "app">
   <p style = "font-size:25px;">计数器: {{ products.id }}</p>
   <button @click = "products.id++" style = "font-size:25px;">点我</button>
</div>
<script type = "text/javascript">
var myproduct = {"id":1, name:"book", "price":"20.00"};
var vm = new Vue({
   el: '#app',
   data: {
      products: myproduct
   }
});
vm.products.qty = "1";
console.log(vm);
vm.$watch('products.id', function(nval, oval) {
   alert('计数器值的变化 :' + oval + ' 变为 ' + nval + '!');
});
</script>

 

在以上实例中,使用以下代码在开始时创建了一个变量 myproduct:

var myproduct = {"id":1, name:"book", "price":"20.00"};

该变量在赋值给了 Vue 实例的 data 对象:

var vm = new Vue({ el: '#app', data: { products: myproduct } });

如果我们想给 myproduct 数组添加一个或多个属性,我们可以在 Vue 实例创建后使用以下代码:

vm.products.qty = "1";

查看控制台输出:

如上图看到的,在产品中添加了数量属性 qty,但是 get/set 方法只可用于 id,name 和 price 属性,却不能在 qty 属性中使用。

我们不能通过添加 Vue 对象来实现响应。 Vue 主要在开始时创建所有属性。 如果我们要实现这个功能,可以通过 Vue.set 来实现:

<div id = "app">
<p style = "font-size:25px;">计数器: {{ products.id }}</p>
<button @click = "products.id++" style = "font-size:25px;">点我</button>
</div>
<script type = "text/javascript">
var myproduct = {"id":1, name:"book", "price":"20.00"};
var vm = new Vue({
   el: '#app',
   data: {
      products: myproduct
   }
});
Vue.set(myproduct, 'qty', 1);
console.log(vm);
vm.$watch('products.id', function(nval, oval) {
   alert('计数器值的变化 :' + oval + ' 变为 ' + nval + '!');
});
</script>

 

从控制台输出的结果可以看出 get/set 方法可用于qty 属性。

Vue.delete

Vue.delete 用于删除动态添加的属性 语法格式:

Vue.delete( target, key )

参数说明:

  • target: 可以是对象或数组
  • key : 可以是字符串或数字
<div id = "app">
   <p style = "font-size:25px;">计数器: {{ products.id }}</p>
   <button @click = "products.id++" style = "font-size:25px;">点我</button>
</div>
<script type = "text/javascript">
var myproduct = {"id":1, name:"book", "price":"20.00"};
var vm = new Vue({
   el: '#app',
   data: {
      products: myproduct
   }
});
Vue.delete(myproduct, 'price');
console.log(vm);
vm.$watch('products.id', function(nval, oval) {
   alert('计数器值的变化 :' + oval + ' 变为 ' + nval + '!');
});
</script>

 

以上实例中我们使用 Vue.delete 来删除 price 属性。以下是控制台输出结果:

从上图输出结果中,我们可以看到 price 属性已删除,只剩下了 id 和 name 属性,price 属性的 get/set 方法也已删除。

VUE中的this指向问题

在Vue所有的生命周期钩子方法(如created,mounted, updated以及destroyed)里使用this,this指向调用它的Vue实例,即(new Vue)。

箭头函数没有自己的this, 它的this是继承而来; 默认指向在定义它时所处的对象(宿主对象),而不是执行时的对象, 定义它的时候,可能环境是window; 箭头函数可以方便地让我们在 setTimeout ,setInterval中方便的使用this。如果没有特殊指向,setInterval和setTimeout的回调函数中this的指向都是window。这是因为JS的定时器方法是定义在window下的,可以用箭头函数改变定时器的this指向

如果箭头函数被非箭头函数包含,则this绑定的是最近一层非箭头函数的this;否则,this的值会被设置为全局对象

个人总结重点

var <varname>=new Vue({}) 创建vue构造器  构造器里面 el:<idname>  data:用于定义属性,methods:用于定义函数 return返回    {{}}用于返回对象属性和函数返回值 比如 {{details()}}返回methods的datails函数的return

数据绑定 文本: v-text html: v-html       属性: v-bind:class="{'class1':use}"  vue 实例data里面可以用true和false来动态切换

v:bind

绑定表达式:也是用bind: 例 <div v-bind:id="'list-' + id">菜鸟</div>

绑定style   <div v-bind:style="styleObject"></div> 

条件判断 v-if v-else  v-else-if  v-show根据表达式值来决定是否插入绑定元素   

v-on监听事件名

双向绑定 在表单控件上创建双向绑定,根据表单值,自动更新绑定元素值 

过滤器 vue.filter 不改变原来数据,只产生新数据   管道符 | 左右传值,右边过滤器名称

缩写 v-bind 变成:  v-on变成@

循环 v-for site in sites语法  sites 是源数据数组并且 site 是数组元素迭代的别名,在标签内的话,循环几次,标签输出几次,也可以整数循环  <li v-for="n in 10"> {{ n }} </li> 输出10个li,内容从1到10

计算属性  computed 两个方法 getter setter 。getter查询时调用的函数 setter绑定尝试改变设置属性调用的函数,只有一个函数,默认getter

监听属性 watch 监听watch所有属性,如果有改变,调用与其绑定的函数

响应式接口 vm.$watch('data', function (newValueoldValue){ ...}  得添加在vue实例外才能正常响应

修饰符 .stop阻止冒泡 .capture捕获 .self本身触发,触发回调 .prevent(分很多情况) .keyup 键盘输入

混入  先定义一个重复使用的对象,对象里写好语句。然后在vue内 mixins:[定义的对象名],就相当于把对象里面的语句,并入了vue内部

添加Vue.set( target, key, value ) 删除属性   Vue.delete( target, key )

 

posted @ 2020-06-21 01:02  Ren小白  阅读(105)  评论(0)    收藏  举报
levels of contents