在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ vue實例對象data屬性訪問不到值的問題

vue實例對象data屬性訪問不到值的問題

實際上我的問題標題表述的是由問題的,但是又找不到好的切題的表述 … 希望大神能進來吧

<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();
            }
        });
        //加載頁面
        //app.post.getArticleList();
    });
</script>

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

問題來了

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

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

為什么 ?原理 …

回答
編輯回答
舊言

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

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

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

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

因為沒有完成數(shù)據(jù)觀測和對應(yīng)的回調(diào)?

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

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

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

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

2017年5月16日 09:24