美文网首页张蕾的技术博客web前端
vue学习大纲1-基础,事件和数据交互

vue学习大纲1-基础,事件和数据交互

作者: cd72c1240b33 | 来源:发表于2017-06-02 10:49 被阅读509次

vue快速上手

vue.js

  • 是一套构建用户界面的,渐进式框架;
  • MVVM框架,易学,轻量,灵活
  • vue的质量以v-xxx,属性方法均挂在VUE的实例上,适用于移动端项目;

vue1.0 & vue2.0

  • 通过npm install bower
  • bower info vue 查看vue的所有版本;

双向数据绑定+表达式

  • 一块json+html
  • 双向数据绑定viewModel
    view <--> viewModel -><-model
  • 双向数据绑定,必须满足视图可以更改, eg:表单元素input
    • 双向数据绑定,需要一个指令;所有的表单元素,都需要增加v-model元素
  • 表达式{{}}
<div id="app">
    <!--双向数据绑定,需要一个指令;所有的表单元素,都需要增加v-model元素-->
    <input type="text" v-model="msg">
    <!--表达式,支持赋值; 三元表达式; 运算-->
    {{msg}}{{age=100}} {{msg=="hello"?200:msg}} {{1+3*2}}
</div>

常用指令

+ v-model 双向数据绑定
+ v-once 注意:绑定一次在 1.0中用{*msg} {{{msg}}};已被废弃;
+ v-html="msg"  =>msg的数据为`<h1>哈哈哈哈哈哈</h1>`
+ v-on:click 但他会报错,建议写成@click

arr-for 遍历数组

+ 1.0 如果数组中有相同的数据,可以用track-by=$index;

```
<!--遍历数组时,需要增加 track-by=$index -->
<!--我们常绑定的数据为对象和数组-->
<!--<div id="app">{{arr}}</div>-->
<div id="app">
    <!--要重复谁,就在谁的身上写v-for -->
    <ul>
        <!--a变量,代表就是arr中的某一个;这是1.0的写法-->
        <!--track-by="$index":强制跟随索引遍历数组,这样就不会报错-->
        <li v-for="(index,val) in arr" track-by="$index">{{val}} {{index}}</li>
    </ul>
</div>
```
+ 2.0 中,track-by已被废弃;key和value的顺序已接近原生forEach();arr.forEach((item,index)=>{})

```
<ul>
    <!--track-by="$index":在2.0已被废弃-->
    <li v-for="(val,index) in arr">{{val}} {{index}}</li>
</ul>
```

obj-for遍历对象

+ 1.0 可以使用$index,$key
```
//不使用小括号
<ul>
   // val代表的是obj中的值
    <li v-for="val in obj">{{val}} {{$index}} {{$key}}</li>
</ul>
```
```
//使用小括号
<ul>
    <li v-for="(key,val) in obj">{{val}} {{$index}} {{key}}</li>
</ul>
```
+ 2.0 不能使用不认识的字符,比如$index,$key等
```
<ul>
    <!--如果v-for不使用小括号,还只是value;使用小括号,在1.0中是key,val;在2.0中是val,key-->
    <li v-for="(val,key) in obj">{{key}} {{val}}</li>
</ul>
```

v-show和v-if

  • 真的消失(v-if="flag") 和 样式上的消失(v-show)
  • 如果频繁切换显示或隐藏,就用v-show;它的原理是display:none
  • 判断数据是否存在,就用v-if ;它的原理:removeChild()
//html部分
<div id="app">
    <div v-if="flag">是否为true,true显示,否则消失</div>
    <div v-if="obj">{{obj.name}}</div>
</div>

//js部分
new Vue({
        el:'#app',
        data:{
            flag:false,
            obj:{name:1} //切记obj不能删,可以赋值为null或undefined
        }
    })

实战-购物车:

实战样式
  • 涉及技术栈:
    • bootstrap央视布局
    • 绑定数据,事件,函数
    • v-show 条件显示和隐藏
    • v-modle 双向数据绑定
    • v-for 遍历数组

vue中的事件和数据交互

事件基础

  • fn:加括号,一般用于传递参数,如果传递参数要手动增加$event;
    //如果用v-on:click会报红,所以简写成@事件名,如@click

    <button @click="fn($event)">增加手机按钮</button>
    
    • 所有关在data上的东西,都是实例的属性;所以所有数据都会挂在this实例上;
      数据存放地,和函数存放地;
    var vm=new Vue({
        el:'#app',
        data:{//这里放所有数据;所有放在data上的东西,都是实例的属性;所以所有数据都会挂在this实例上;
            arr:["iphone6","iphone7","iphone8"]
        },
        methods:{//这里放所有函数;所有方法中的this指向都是实例;
            fn(e){
                console.log(this)//this就是实例;
                this.arr.push('66666')
            }
        }
    })
    

高级事件

  • 阻止冒泡:

    • 思路1:在fn中用原生 e.stopPropagation()
    • 思路2:利用vue自带的修饰符 @click.stop="fn"
    <div @click.stop="fn">child</div>
    
  • 阻止默认事件

    • 思路1:在fn中用原生 e.preventDefault()
    • 思路2:利用vue自带的修饰符 @click.prevent
    <a href="http://www.baidu.com" @click.prevent="fn1">ymy</a>
    

键盘事件

  • 思路1:利用原生e.keyCode进行判断
  • 思路2:vue自身提供的修饰符 @keydown.enter="fn"
    • 以上enter,也可以写为数字 @keydown.13="fn"
    • 其他类似 @keydown.up @keydown.down @keydown.right @keydown.left

动态绑定:

  • 绑定动态数据,需要使用bind;v-bind:src="attr" 可以简写为 :src="attr"

    • ![](attr)
  • 动态绑定class

    • 对象形式:根据boolean类型,增加样式
    <div :class="{back:flag,color:!flag}">ymy</div>
    data:{
        flag:true
    }
    
    • 数组形式:
    <div :class="[back1,col1]">ymy</div>
    data:{
        back1:"back",
        col1:"color"
    }
    
  • 动态绑定style

    • 对象绑定
    <div :style="{background:'green',color:'white'}">哈哈哈哈</div>
    
    • 数组绑定
    <div :style="[a,b]">aaaaaaaaa</div>
    data:{
        a:{fontSize:"55px"},
        b:{backgroundColor:'yellow'},
        flag:true
    }
    

请求数据

vue-resource

  • get请求
//配合服务器
//this是vue的实例; get请求
this.$http.get('/getData').then(function (res) {
    this.msg=res.body;
})
  • post请求,配合body-parser
//前端
this.$http.post('/postUser',{"name":"ymy"}).then(function (res) {
    console.log(res.body);

})
//服务器
app.use(bodyParser.json());//利用bodyparser模块接收传过来的json数据;
this.$http.post('/postUser',{"name":"ymy"}).then(function (res) {
    console.log(res.body);
})
  • jsonp请求
this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',{
    params:{//参数
        wd:'c'
    },
    jsonp:'cb'//回调的函数名
}).then(function (res) {
    console.log(res.body.s)
})

实战:百度搜索

相关文章

  • vue学习大纲1-基础,事件和数据交互

    vue快速上手 vue.js 是一套构建用户界面的,渐进式框架; MVVM框架,易学,轻量,灵活 vue的质量以v...

  • vue学习-基础,事件和数据交互

    vue数据双向绑定(v-model)原理? vue指令 v-text === {{}} {{}} 页面会显示变量...

  • Vue1.0学习小结1

    目录 什么是Vue? 常用指令 事件 属性 class和style 过滤器 数据交互 1. 什么是Vue? vue...

  • vue起步(2)之数据交互

    vue中的交互(ajax,jsonp) vue中也存在像ajax和jsonp的数据交互,实现向服务器获取数据,但是...

  • vue基础

    一,vue基础 数据绑定列表循环 事件处理 在script标签中 //实例化vue var app=new Vue...

  • 实例学习vue.js目录

    目录 入门篇 初识vue vue基础指令 vue实例:标语大作战 事件修饰符 双向数据绑定 使用v-for遍历数据...

  • DOM事件

    DOM事件的概念 事件是javascript和HTML交互基础,。交互;比如鼠标点击事件、敲击键盘事件等。这样的事...

  • DOM级别与DOM事件

    事件是javascript和HTML交互基础, 任何文档或者浏览器窗口发生的交互, 都要通过绑定事件进行交互;比如...

  • axious

    axios: vue ajax 前端页面和后台数据进行交互 json vue 库

  • Vue学习总结(2019.7.31-8.4)

    Vue学习总结 目录 vue基础知识(1-13)vue 引入,实例化vue 数据 & 方法vue 绑定(:)vue...

网友评论

    本文标题:vue学习大纲1-基础,事件和数据交互

    本文链接:https://www.haomeiwen.com/subject/zdoyfxtx.html