html:

<div id="app">
    <table cellspacing="0" class="tb ls">
        <tbody>
        <tr>
            <th data-hide="1200">用户名</th>
            <th data-hide="1200">价格</th>
            <th>IP</th>
            <th>添加时间</th>
            <th>可领取次数</th>
            <th>已领取次数</th>
            <th>信息</th>
            <th>操作</th>
        </tr>
        <tr v-for="(item,index) in list" :key="index">
            <td>{{item.username | capitalize}}</td>
            <td>{{item.price}}</td>
            <td>{{item.ip}}</td>
            <td>{{item.create_time}}</td>
            <td>{{item.number_count}}</td>
            <td>{{item.c_number}}</td>
            <td>
                <ul v-for="(_item,_index) in list[index].answer" :key="_index">
                    <li>{{_item.content}}</li>
                </ul>
            </td>
            <td v-if="item.phone"><button @click.stop="callPhone(list[index].phone)" class="call">电话咨询</button></td>
        </tr>
        </tbody></table>
    <div id="list_page" class="list_page" style="text-align: center;"></div>

</div>

js:

 new Vue({
        el: '#app',
        data: {
            page: 1,
            total: 0,
            pageSize:5,
            tmpListTotal:0,
            state:4,
            loadImg:"",
            timer:null,
            free_status:1,
            list: [],
            userInfo:{},
            isFirstPage:true
        },
        filters: {
            capitalize: function (value) {
                if (!value) return '暂无用户名';
                value = value.toString();
                return value.charAt(0).toUpperCase() + value.slice(1);
            }
        },
        created() {
            this.getUserInfo();
            this.getList(this.page,userInfo.userid);
        },
        mounted(){
            this.$nextTick(()=>{
                window.addEventListener('scroll',this.handleScroll,true);
            })
        },
        methods: {
            getUserInfo() {
                let _url = "/form/message.php";
                $.ajax({
                    url: _url,
                    method: "POST",
                    async:false, // 同步
                    success: function (res) {
                        let _res = JSON.parse(res);
                        if(_res.code=== 1){
                            userInfo = Object.assign({}, _res.data);
                            console.log('userInfo', userInfo);
                        }
                    },
                    error: function (res) {
                        console.log('error_res', res);
                    }
                });
            },
            getList(_page,userId) {
                let _url= "/apis/form_message/my_message";
                let _this = this;
                $.ajax({
                    url:_url,
                    data:{
                        userid: userId,
                        page:_page
                    },
                    method:"POST",
                    success:function (res) {
                        if(res.code == 1){
                            _this.total = res.data.list_count;
                            _this.pageSize = res.data.pagesize;
                            if(res.data.list_count === 0){
                                _this.state = 6;
                            }
                            if(res.data.list_count <= _this.pageSize){
                                _this.state = 5;
                            }
                            if(_this.page == 1){
                                _this.list = res.data.list;
                            }else{
                                _this.list = _this.list.concat(res.data.list);
                            }
                            if(_this.isFirstPage){
                                _this.pageInit(_this.total);
                            }
                        }
                    }
                });
            },
            pageInit(listTotal) {
                let _this = this;
                if(listTotal === 0){
                    $("#join_page").hide();

                }else{
                    $("#join_page").show();
                }
                layui.use(['laypage','layer'], function() {
                    let laypage = layui.laypage,layer = layui.layer;
                    if(listTotal) {
                        _this.tmpListTotal = listTotal;
                    } else {
                        listTotal = _this.tmpListTotal;
                    }

                    //页码初始化
                    laypage.render({
                        elem: 'list_page'
                        ,theme: '#007AFF'
                        , count: listTotal //数据总数
                        ,limit: _this.pageSize // 每页条数
                        ,prev:"<"
                        ,next:">"
                        ,jump: function(obj,first){
                            if(!first){
                                _this.isFirstPage = false;
                                _this.getList(obj.curr,userInfo.userid);
                            }else{
                                _this.isFirstPage = true
                            }
                        }
                    });
                });
            },
            callPhone(phone){
                console.log('phone',phone);
                if(phone){
                    window.location.href= "tel:"+ phone;
                }else{
                    layer.msg("该用户暂无联系方式");
                }
            }
        }
    })

 

单独使用jquery时,this指向一般情况下都是指向window对象(有定时器或者延时器时例外);在vue页面使用箭头函数,一般情况也不用考虑this指向问题。但是当html中jq和vue混用时,就需要考虑this指向问题。

实例中的【userInfo】赋值和调用最为明显。调用方式和jq调用如出一辙。我也没弄明白啥原因,些许是因为userInfo的赋值是在同步获取ajax数据后再赋值的,所以在全局其他地方调用时可直接使用变量名,不用this关键字也不用_this就能调用成功。

 

没有人能一路单纯到底,但是要记住,别忘了最初的自己!