vue学习笔记

数据绑定

文本绑定:<div>{{value}}</div>
属性绑定:v-bind:title="value" 简写 :title="value"
双向绑定:<input v-model="value">
style绑定: 样式名不用单引号,变量不用单引号,单位要单引号
1、对象语法:<div :style="{color: value1,fontSize: value2 + 'px' }"></div> <div :style="{width:value+'px'}">
直接绑定到一个样式对象通常更好,这会让模板更清晰。<div :style="Object"></div>
2、数组语法:<div :style="[value1, value2]"></div>
class绑定:
1、属性语法:<div :class="className1"></div>
2、对象语法:<div :class="{className1: isTrueOrFalse,className2: isTrueOrFalse}"></div>
3、数组语法:<div :class="[className1, className2]"></div>
4、对象和数组一起用:<div :class="[{className1:isTrueOrFalse}, className1]"></div>
<div :class="isEchartShow==true?'botton_panel_show':'botton_panel_hide'"> 等同于 <div :class="{botton_panel_show:isEchartShow,botton_panel_hide:!isEchartShow}">

 

 

常用vue指令

<div>{{Value}}</div> 文本值绑定
v-bind:title="value" 属性值绑定
v-if="value==true" 条件指令
v-for="item in arr" 循环指令 <li v-for="(item,key) in arr">
v-on:click="deal" 事件监听指令
v-model="Value" 双向绑定
v-once  只更新一次
v-html="value"  允许包含html标签元素

 

 

指令的简写

v-bind  简写   冒号:

v-on   简写   邮箱符号@

 

html中声明vue对象

var app=new vue({
el:'#map1',
data:{theValue:'aa'},
created() function () {
  this.debouncedGetAnswer = _.debounce(this.getAnswer, 500)
},
mounted(){
},

computed: {
  reversedMessage: function () {
    return this.message.split('').reverse().join('')
  }
},
methods: {
  reversedMessage: function () {
    return this.message.split('').reverse().join('')
  }
},
watch: {
  firstName: function (val) {
    this.fullName = val + ' ' + this.lastName
  },
  lastName: function (val) {
    this.fullName = this.firstName + ' ' + val
  },
  question: function (newQuestion, oldQuestion) {
    this.answer = 'Waiting for you to stop typing...'
    this.debouncedGetAnswer()
  }
}
})

计算属性

计算属性vs方法: 可以达到同样的效果,但是,计算属性只有当依赖绑定属性更新时执行,方法则会一直执行。
计算属性vs侦听器:可以达到同样的效果,但是,计算属性是依赖于绑定属性更新的,自动执行,写法比监听器(多个对象要监听多次)简单

 

访问数据属性

app.theValue,app.$data.theValue

 

变量变化监控
vm.$watch('a', function (newValue, oldValue) {xxxxx})

(当需要在数据变化时执行异步或开销较大的操作时)

 

生命周期

创建created,挂载mounted,更新updated,销毁destroyed

 

等于符号

==是值是否相等,===是对象是否相等。


v-bind动态参数
<a v-bind:[attributeName]="url">
<a v-bind:[eventName]="aaa">

 

事件修饰符
<form v-on:submit.prevent="onSubmit"
.stop
.prevent
.capture
.self
.once
.passive
event.preventDefault() 或 event.stopPropagation()

 


注册组件

Vue.component('todo-item', {
    data: function () {
        return {
        count: 0
        }
    } ,
    props: ['todo'],
    template: '<li>{{ todo.text }}</li>'
})           

 

class绑定+style绑定
对象语法:<div v-bind:class="classObject"></div>
数组语法:<div v-bind:class="[{ active: isActive }, errorClass]"></div>

对象语法:<div v-bind:style="styleObject"></div>
数组语法:<div v-bind:style="[baseStyles, overridingStyles]"></div>

 

注意事项

一、数组更新
以下情况,vue不能检测到
1、利用索引设置数组项时
vm.items[indexOfItem] = newValue
2、修改数组长度时
vm.items.length = newLength
解决办法:
问题1:
Vue.set(vm.items, indexOfItem, newValue)
vm.$set(vm.items, indexOfItem, newValue)
vm.items.splice(indexOfItem, 1, newValue)
问题2:
vm.items.splice(newLength)

 

2、对象属性的添加或删除

Vue 不能检测对象属性的添加或删除
解决办法:
Vue.set(object, propertyName, value)
vm.$set(vm.userProfile, 'age', 27)


添加多个属性:
Object.assign()

 

posted @ 2020-01-30 20:57  JackGIS  阅读(305)  评论(0编辑  收藏  举报