1***@qq.com
1***@qq.com
  • 发布:2018-08-15 11:09
  • 更新:2018-08-15 11:44
  • 阅读:2038

请帮忙看下下方的代码,我想使用onShow监听每次页面显示的时候远程获取一个列表,但为啥获取到值后无法再目标模板上渲染出来呢??

分类:uni-app

请帮忙看下下方的代码,我想使用onShow监听每次页面显示的时候远程获取一个列表,但为啥获取到值后无法再目标模板上渲染出来呢??

<template>  
    <view>  
        <view class="page-head">  
            <view class="page-head-title ">  
                <button class="mini-btn" type="primary" size="mini" @tap="addcar">添加新车辆</button>  
            </view>  
        </view>  
        <view class="page-body" id="carlist">  
            <view class="uni-card" v-for="(value,key) in carlistdata" :key="key">  
                <view class="uni-card-header">{{value.carname}}</view>  
                <view class="uni-card-content">  
                    <view class="uni-card-content-inner">  
                        {{value.license}}  
                    </view>  
                </view>  
            </view>  

        </view>  
    </view>  
</template>  

<script>  
    import pageHead from '../../../components/page-head.vue'  
    export default {  
        //      onLoad: function (option) { //option为object类型,会序列化上个页面传递的参数  
        //          const uid = option.uid; //打印出上个页面传递的参数。  
        //      },  
        data: {  

            title: '车辆列表',  
            carlistdata:[]  

        },  
        onShow: function (e) { //option为object类型,会序列化上个页面传递的参数  
            const uid = uni.getStorageSync('uid');  
            if (uid != "") {  
                this.getcarlist(uid);  
            } else {  
                uni.showModal({  
                    title: '提示',  
                    content: '您还未登录请先登录',  
                    success: function (res) {  
                        if (res.confirm) {  
                            //console.log('用户点击确定');  
                            uni.navigateTo({  
                                url: '/pages/login/login'  
                            });  
                        } else if (res.cancel) {  
                            //console.log('用户点击取消');  
                            uni.switchTab({  
                                url: '/pages/component/component'  
                            });  
                        }  
                    }  
                });  

            }  
        },  

        components: {  
            pageHead  
        },  
        methods: {  
            addcar(e) {  
                uni.navigateTo({  
                    url: '/pages/car/addcar/addcar'  
                });  

            },  
            getcarlist(e) {  
                uni.request({  
                    url: 'https://119119.aumake.com/hdlapp/index.php?c=Appport&a=getmycar', //仅为示例,并非真实接口地址。  
                    data: {  
                        uid: e  
                    },  
                    header: {  
                        'content-type': 'application/json' //自定义请求头信息  
                    },  
                    success: function (res) {  
                        //console.log(res.data);  
                        var rescode = res.data.code;  
                        if (rescode > 0) {  
                            var carlist = res.data.carlist;  
                            console.log(JSON.stringify(carlist));  
                            return this.carlistdata = JSON.stringify(carlist);  

                        } else {  
                            uni.showModal({  
                                title: "注意",  
                                content: "您尚未绑定车辆",  
                                showCancel: false,  
                                confirmText: "确定"  
                            });  
                            //uni.removeStorageSync('checkCode');  
                        }  

                    }  
                });  
            }  
        },  
    }  
</script>  

<style>  
    @import "../../../common/uni.css";  
    .page {  
        padding-top: 60px;  
    }  

    page {  
        background: #efeff4;  
    }  

    .image-view {  
        height: 480px;  
        overflow: hidden;  
    }  

    .image {  
        width: 100%;  
    }  
</style>  
2018-08-15 11:09 负责人:无 分享
已邀请:
Trust

Trust - 少说废话

Array = String?
this.carlistdata = JSON.stringify(data)
JSON.stringify() 的结果是字符串,而不是数组。直接用 res.data.carlist 赋值就行了。

  • 1***@qq.com (作者)

    可以简单先帮我看下有没有问题,carlistdata:[]初始值为空,然后监听显示页面后,需要重新赋值并把值在模板历遍显示出来,我这样写有没有问题呢?

    2018-08-15 11:38

  • Trust

    回复 1***@qq.com:赋值操作不正确,数组 = 字符串,给数组赋值一个字符串,它怎么遍历显示。

    2018-08-15 11:43

  • 1***@qq.com (作者)

    回复 Trust:对吼,谢谢提醒,不过我直接用 res.data.carlist 赋值了,可是模板还是历遍不出来,(⊙o⊙)…

    2018-08-15 12:54

  • 1***@qq.com (作者)

    data、onShow、methods什么的有先后顺序么

    2018-08-15 13:28

该问题目前已经被锁定, 无法添加新回复