Vue基础第三篇

一、表单控制

1 checkebox:
    -单选
    -多选
2 radio
    -单选

示例:




    
    Title
    


checkbox单选

checkbox多选

radio单选

用户名:

密码:

记住密码:

爱好:

篮球:

足球:

乒乓球:

性别: 男: 女: 保密:


用户名:{{username}}--–>密码:{{password}}----> {{remember}}---》爱好:{{hobby}}---》性别:{{gender}}

二、购物车案例

2.1 基本购物车




    
    Title
    
    
    
    


购物车

商品ID 商品名 商品价格 商品数量 操作
{{good.id}} {{good.name}} {{good.price}} {{good.number}}

选中了:{{checkGroup}}

总价格:{{getPrice()}}

选中了checkbox,checkGroup会发生变化,页面也在变,都会重新刷新页面,函数就会重新执行

补充:

   //补充: js循环
    var arr = [33, 2, 3, 4, 6, 7, 4]
    // 1 基础for循环
    // for (var i = 0; i < arr.length; i++) {
    //     console.log(arr[i])
    // }
    // 2 in的循环(不怎么用),循环出索引
    // for (i in arr) {
    //     // console.log(i)
    //     console.log(arr[i])
    // }

    //3 of 循环  es6的语法  循环出value值
    // for (i of arr) {
    //     console.log(i)
    // }


    // 4 数组的循环
    // arr.forEach(function (value, index) {
    //     console.log(index, '--', value)
    // })

    // 5 jq的循环
    // $.each(arr, function (index, value) {
    //     console.log(index, '--', value)
    // })

2.2、全选全不选版




    
    Title
    
    
    


购物车

商品ID 商品名 商品价格 商品数量 全选/全不选
{{good.id}} {{good.name}} {{good.price}} {{good.number}}

选中了:{{checkGroup}}
{{checkAll}}

总价格:{{getPrice()}}

2.3加减数量版




    
    Title
    
    
    


购物车

商品ID 商品名 商品价格 商品数量 全选/全不选
{{good.id}} {{good.name}} {{good.price}} {{good.number}}

选中了:{{checkGroup}}
{{checkAll}}

总价格:{{getPrice()}}

三、v-model进阶

v-model 之 lazy、number、trim
lazy:等待input框的数据绑定时区焦点之后再变化
number:数字开头,只保留数字,后面的字母不保留;字母开头,都保留
trim:去除首位的空格




    
    Title
    


lazy修饰符

---->{{username}}

number修饰符

---->{{username1}}

trim修饰符

---->{{username2}}

四、与后端交互的三种方式


前后端要打通----》从前端发送ajax---》核心:使用js发送http请求,接收返回
    -原生js,可以开启ajax,但是原生js开启,比较麻烦,需要做浏览器兼容,有坑(基本不写)
        
    -jq,写了个兼容所有浏览器的  $.ajax(),不仅仅有ajax,还封装了很多dom操作
        -如果vue中使用它,不合适
    -axios:第三方的ajax包(咱们用)
    -fetch: 原生js发送ajax请求,有的浏览器也不兼容

后端(flask):

pip3 install flask

from flask import Flask, jsonify

app = Flask(__name__)


@app.route('/')
def index():
    print('来了,老弟')
    # 前后端分离后,一定会出跨域---》后面要解决的重点
    # 在响应头中加入:Access-Control-Allow-Origin ,就就可以解决跨域
    res = jsonify({'name': '彭于晏', 'age': 19})
    res.headers = {'Access-Control-Allow-Origin': '*'}
    return res


if __name__ == '__main__':
    app.run()

前端:



您的名字是:{{name}},您的年龄是:{{age}}

使用jq的ajax:

handleLoad() {
                // 请求发送成功,后端执行了,但是被浏览器拦截了,因为有跨域问题
                // 当前地址,如果向非浏览器地址栏中得地址发送请求,就会出现跨域
                // 1 ajax请求方式 1    jquery的ajax
                var _this = this
                $.ajax({
                    url: 'http://127.0.0.1:5000',
                    type: 'get',
                    success: function (data) {
                        console.log(typeof data)
                        var res = JSON.parse(data)
                        _this.name = res.name
                        _this.age = res.age

                    }
                })

            }

使用fetch

handleLoad() {
                // 2 使用js原生的fetch(目前也不用)
                // fetch('http://127.0.0.1:5000').then(function (response) {
                //     // console.log(response)
                //     return response.json();
                // }).then(function (res) {
                //     console.log(res);
                // });
                // 了解,箭头函数一会讲
                fetch('http://127.0.0.1:5000').then(res=>res.json()).then(res=>{
                    console.log(res)
                })

            }

使用axios(以后用这个)

handleLoad() {
                var _this = this
                axios.get('http://127.0.0.1:5000').then(function (res) {
                    console.log(res.data)
                    _this.name = res.data.name
                    _this.age = res.data.age
                })
            }

五、箭头函数

es6 的语法
    1 函数写法变简单
    2 箭头函数没有自己的this,在箭头函数中使用this,就是它上一层的

示例:

 箭头函数

你可能感兴趣的:(Vue,vue.js,javascript)