这个取值是什么问题啊
发布于 2 个月前 作者 banyungong 104 次浏览 来自 问答
18 回复

在data() 里面有rows和query

GetAll() 获取列表数据,里面的rows1和nameList1都是有值的

getDict()方法里的this.rows是空的

那这个要怎么解决啊 大佬

query的值是什麼?怎麼產生的呢?還有那 GetAll() 的方法是做什麼的?

這樣怎麼會有人知道你的query ,rows是啥…

因為你要從API拿完資料,才會有值。
你可以提前到created()的生命週期取得資料。

我大概猜到你要做什麼了,你必須先等getRows()執行完。

async mounted(){
  await this.getRows();
  this.getDict()
}

雖然你不能解釋,但GetAll()應該不是JavaScript的原生方法。
簡單猜測就是,需要使用GetAll()方法才能取得rowsnameList的值,所以是那些值是非同步的。

import axios from ‘axios’;

let base = ‘/api/newsclass’

export const GetAll = params => {
return axios.post(base + ‘/findNewsClass’, params);
}

方法是引入这个JS文件的

都不行,页面数据是空的

QQ%E6%88%AA%E5%9B%BE20200326113814
页面还是报错
vue.runtime.esm.js?a427:619 [Vue warn]: Error in render: “TypeError: Cannot read property ‘nameList’ of null”

你这有个异步啊- -。异步没执行完就getDick,那当然没有值了。。。
一个promise就解决了

我自己解决了 但是我不知道原因

  getDict1() {
  		var params={
  			pageNo: 1,
  			pageSize: 30,
  		};
  		GetDict(params).then(res => {
  			this.nameList = res.data.data.map(v => {
  				return {
  				  value: v.classId,
  				  label: v.className
  				};
  			});
  		})	
  	},

这样写页面就可以获取到值了
GetDict和GetAll一样的方法,只是换了个名字,
多了里面的

this.nameList = res.data.data.map(v => {
return {
value: v.classId,
label: v.className
};
});

能不能具体点,我刚开始弄前端

在getRows里面拿到this.rows之后,写一个nextTick,在nextTick里面触发this.getDIct()可以吗?

vue+element

< template slot-scope=“scope”>
{{translate(scope.row.pid,this.nameList)}}
< /template>

我是页面需要这个值,但是报错,说是空值

應該是這樣子才對吧

async created(){
 await this.getRows();
  this.getDIct();
}
回到顶部