Welcome to 16892 Developer Community-Open, Learning,Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue + axios + vuex</title>
    <script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/vuex/3.1.1/vuex.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/axios/0.1.0/axios.js"></script>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/qs/6.9.4/qs.min.js"></script>
</head>
<body>
    <div id="app">
        <h2>顾客管理</h2>
        <!-- 表单 -->
        <button @click="adduser">添加</button>
        <form action="" v-show="visable" @submit.prevent="submitHandler">
            姓名: <input type="text" v-model="form.realname">
            手机: <input type="text" v-model="form.telephone">
            <input type="submit" value="提交">
        </form>
        <!-- 表格 -->
        <table >
            <thead>
                <tr>
                    <th>编号</th>
                    <th>姓名</th>
                    <th>手机号</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                <tr v-for="c in customers">
                    <td>{{c.id}}</td>
                    <td>{{c.realname}}</td>
                    <td>{{c.telephone}}</td>
                    <td>
                        <a href="" @click.prevent="deleteHandler1(c.id)">删除</a>
                        <a href="" @click.prevent="editHandler">修改</a>
                    </td>
                </tr>
            </tbody>
        </table>
    </div>
    <script>
        let store = new Vuex.Store({
            state:{
                visable:false,
                customers:[]
            },
            getters:{
                
            },
            mutations:{
                loadTubian(state,customers){
                    state.customers = customers
                },
                loadModel(state){
                    state.visable=true
                },
                loadModel2(state){
                    state.visable=false
                }
            },
            actions:{
                async loadDate(context){
                    let response = await axios.get("")
                    console.log(response)
                    context.commit("loadTubian",response.data)
                },
                async deleteHandler({dispatch},aaa){
                    let response = await axios.get(""+aaa)
                    dispatch("loadDate")
                    return response
                },
                async saveOrUpdateCustomer({dispatch,commit},customer){
                    console.log($.param(customer))
                    let response = await axios({
                        url:""+$.param(customer),
                        method:"post",
                        headers:{
                            "Content-Type":"application/x-www-form-urlencoded"
                        },
                    });
                    commit("loadModel2");
                    dispatch("loadDate");
                    return response;
                }
            }
        })
        new Vue({
            el:"#app",
            store,
            computed: {
                ...Vuex.mapState(["visable","customers"])
            },
            data:{
                form:{}
            },
            created() {
                this.loadDate()
            },
            methods: {
                ...Vuex.mapActions(["loadDate","deleteHandler","saveOrUpdateCustomer"]),
                ...Vuex.mapMutations(["loadModel","loadModel2"]),
                submitHandler(){
                    // console.log(this.form)
                    this.saveOrUpdateCustomer(this.form)
                    .then((response)=>{
                        alert(response.message)
                    })
                },
                adduser(){
                    this.form={}
                    this.loadModel()
                },
                deleteHandler1(id){
                    let promise = this.deleteHandler(id)
                    promise.then((response)=>{
                        alert(response.message)
                    })
                },
                editHandler(){
                    this.loadModel()
                }
            },
        })
    </script>
</body>
</html>

两个问题:
1.为什么在loadDate的异步请求中,console.log(response)发现,返回的结果并没有封装到data中?
2.在saveOrUpdateCustomer的异步请求中,为什么将$.param(customer)写到data中,会导致数据无法传输,而将$.param(customer)拼接到url后面就可以?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
705 views
Welcome To Ask or Share your Answers For Others

1 Answer

data不是传对象吗


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to 16892 Developer Community-Open, Learning and Share
...