鍍金池/ 問(wèn)答/HTML/ vue實(shí)例對(duì)象data屬性訪問(wèn)不到值的問(wèn)題

vue實(shí)例對(duì)象data屬性訪問(wèn)不到值的問(wèn)題

實(shí)際上我的問(wèn)題標(biāo)題表述的是由問(wèn)題的,但是又找不到好的切題的表述 … 希望大神能進(jìn)來(lái)吧

<script language="JavaScript">

    var app = {
        state: 0,
        page: {},
        post: {
            getArticleList: function(){
                console.log(app.page.pn);
                $.post('http://www.xxx.com.cn/api.php/Article/GetArtList',{
                    'page': 1
                },function(res){
                    console.log(app.page.pn);
                    //console.log(app.page.$data.articleList);
                    if(res.data.length > 0){
                        app.page.articleList = app.page.articleList.concat(res.data);
                        app.page.pn = app.page.pn+1;
                    }
                });
            }
        }
    };
    $(function(){
        app.page = new Vue({
            el: '#article-list',
            data: {
                pn: 3,
                articleList: []
            },
            methods: {
                doAjaxLoad: function(){
                    app.post.getArticleList();
                }
            },
            created: function(){
                //console.log(this.pn);
                this.doAjaxLoad();
            }
        });
        //加載頁(yè)面
        //app.post.getArticleList();
    });
</script>

代碼如上,VUE生命周期 created 的時(shí)候,執(zhí)行自定義方法 doAjaxLoad
doAjaxLoad 這個(gè)方法調(diào)用全局對(duì)象 app 里的 post 對(duì)象里的 getArticleList 方法

問(wèn)題來(lái)了

為什么我在getArticleList方法一開始輸出 vue 實(shí)例的 data 屬性 pn 的值的時(shí)候是 undefined
在ajax callback里就能取值

甚至我在 doAjaxLoad 方法里輸出 this.pn 也是有值的 !!

為什么 ?原理 …

回答
編輯回答
舊言

1、為什么我在getArticleList方法一開始輸出 vue 實(shí)例的 data 屬性 pn 的值的時(shí)候是 undefined
因?yàn)閍pp.page = ...是賦值操作,vue實(shí)例化完成后才執(zhí)行。當(dāng)你執(zhí)行到created ==> doAjaxLoad==> getArticleList ==> console.log(app.page.pn)時(shí),app.page還是空對(duì)象。所以app.page.pn是undefined。

2、在ajax callback里就能取值
callback是異步,此時(shí)app.page已賦值。

3、甚至我在 doAjaxLoad 方法里輸出 this.pn 也是有值的 ??!
因?yàn)関ue實(shí)例已經(jīng)初始化了data。

2018年7月31日 07:03
編輯回答
涼心人

因?yàn)闆]有完成數(shù)據(jù)觀測(cè)和對(duì)應(yīng)的回調(diào)?

2018年1月25日 07:53
編輯回答
奧特蛋

在執(zhí)行created的時(shí)候app.page整個(gè)實(shí)例還沒有初始化完成,所以訪問(wèn)不到,只有渲染完之后才得到完整的實(shí)例化對(duì)象

2018年2月15日 21:58
編輯回答
心沉

我建議你上傳一下你的代碼, are you ok?

2017年5月16日 09:24