鍍金池/ 問(wèn)答/HTML/ axios get請(qǐng)求數(shù)據(jù)成功后怎樣動(dòng)態(tài)賦值

axios get請(qǐng)求數(shù)據(jù)成功后怎樣動(dòng)態(tài)賦值

我想在axios取到數(shù)據(jù)后賦值給this.datas.lists。如果直接寫this.datas.lists = res.data是沒(méi)有問(wèn)題的,但是我把this.datas.lists當(dāng)參數(shù)傳進(jìn)來(lái)就無(wú)論如何都賦值不成功,請(qǐng)求是成功的,請(qǐng)問(wèn)是為什么?謝謝
圖片描述

如圖所示,這樣請(qǐng)求數(shù)據(jù)是沒(méi)問(wèn)題的但是將數(shù)據(jù)賦值給message這個(gè)參數(shù),this.datas.lists仍然是空的。

回答
編輯回答
壞脾滊

1.解決方法

使用push()方法,就可以了:

getDate(link,message) {
  this.$http.get(url).then(res=> {
      this.datas.lists .push(res.data);
  })
}

2.問(wèn)題理解

目測(cè)你的參數(shù)this.datas.lists應(yīng)該是數(shù)組類型 [ ],數(shù)組類型屬于引用類型,傳參的時(shí)候?qū)儆?code>引用傳遞。我感覺(jué)你應(yīng)該在問(wèn):我既然用的是引用傳遞,message就是指向this.datas.lists,那為什么this.datas.lists值仍然是空呢?

3.原因

你使用的是message = res.data,實(shí)際上是是將message賦予了res.data對(duì)象的引用,即重新分配了內(nèi)存地址,message自然不再指向this.datas.lists。所以不能改變this.datas.lists的值。

4.數(shù)組類型和引用類型

  1. 基本類型: string,number,boolean,null,undefined
  2. 引用類型: Function,Array,Object
    (通常 [ ]來(lái)定義的數(shù)組是屬于Array)可以通過(guò) instanceof 來(lái)判斷

      var arr=[];
      console.log(arr instanceof Array); //結(jié)果為true

5.建議

建議還是直接使用 this.datas.lists來(lái)操作數(shù)據(jù)就可以了,簡(jiǎn)單快捷啊 ,有木有。

2017年12月24日 02:09
編輯回答
故人嘆

@乾隆 說(shuō)的是對(duì)的,
你傳的實(shí)際上還是一個(gè)“值”,而不是引用。

但你可以試一下傳:this.datas,然后函數(shù)體內(nèi)這樣賦值:

this.datas.lists=res.data;

2017年1月24日 20:59
編輯回答
孤慣

js的函數(shù)參數(shù)傳遞為值傳遞。

當(dāng)傳入的是 基本類型的參數(shù)時(shí):就是復(fù)制了份內(nèi)容給i而已,i與age之間沒(méi)有關(guān)系。

function setAge(i)

{

alert(i);//24
i = 18;
alert(i);//18,i的改變不會(huì)影響外面的age

};

var age = 24;
setAge(age);
alert(age);//24
當(dāng)傳入的參數(shù)為引用類型時(shí):

function setName(obj)

{

obj.name = 'haha';

};

var obj2 = new Object();
setName(obj2);
alert(obj2.name); // haha

這看起來(lái)很像是傳遞的是引用,因?yàn)閛bj.name受到改變了,但其實(shí)不是,其實(shí)還是值,因?yàn)閛bj2本身的值就是新對(duì)象的地址,所以傳進(jìn)去的就是這個(gè)地址。
你可以參考下?。。。。。。。。。。。。。。。?!

2017年8月23日 16:12
編輯回答
怪痞

大哥 你不能把this.data.lists當(dāng)做參數(shù)傳遞進(jìn)去呀~~~
你應(yīng)該這么寫

getDate(link) {
  this.$http.get(url).then(res=> {
      this.datas.lists = res.data 
  })
}
2017年8月19日 16:40
編輯回答
雨萌萌

新建一個(gè)vue調(diào)用方法就可以把值傳出去了圖片描述

2018年3月14日 16:26