张蕾的技术博客web前端

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

2017-06-02  本文已影响509人  cd72c1240b33

vue快速上手

vue.js

vue1.0 & vue2.0

双向数据绑定+表达式

<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

//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
        }
    })

实战-购物车:

实战样式

vue中的事件和数据交互

事件基础

高级事件

键盘事件

动态绑定:

请求数据

vue-resource

//配合服务器
//this是vue的实例; get请求
this.$http.get('/getData').then(function (res) {
    this.msg=res.body;
})
//前端
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);
})
this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',{
    params:{//参数
        wd:'c'
    },
    jsonp:'cb'//回调的函数名
}).then(function (res) {
    console.log(res.body.s)
})

实战:百度搜索

上一篇下一篇

猜你喜欢

热点阅读