axios get请求数据成功后怎样动态赋值
我想在axios取到数据后赋值给this.datas.lists。如果直接写this.datas.lists = res.data是没有问题的,但是我把this.datas.lists当参数传进来就无论如何都赋值不成功,请求是成功的,请问是为什么?谢谢
如图所示,这样请求数据是没问题的但是将数据赋值给message这个参数,this.datas.lists仍然是空的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
1.解决方法
使用push()方法,就可以了:
2.问题理解
目测你的参数
this.datas.lists
应该是数组类型 [ ],数组类型属于引用类型
,传参的时候属于引用传递
。我感觉你应该在问:我既然用的是引用传递,message就是指向this.datas.lists,那为什么this.datas.lists值仍然是空呢?3.原因
你使用的是
message = res.data
,实际上是是将message赋予了res.data对象的引用,即重新分配了内存地址,message自然不再指向this.datas.lists。所以不能改变this.datas.lists的值。4.数组类型和引用类型
引用类型: Function,Array,Object
(通常 [ ]来定义的数组是属于Array)可以通过
instanceof
来判断5.建议
建议还是直接使用
this.datas.lists
来操作数据就可以了,简单快捷啊 ,有木有。js的函数参数传递为值传递。
当传入的是 基本类型的参数时:就是复制了份内容给i而已,i与age之间没有关系。
function setAge(i)
{
};
var age = 24;
setAge(age);
alert(age);//24
当传入的参数为引用类型时:
function setName(obj)
{
};
var obj2 = new Object();
setName(obj2);
alert(obj2.name); // haha
这看起来很像是传递的是引用,因为obj.name受到改变了,但其实不是,其实还是值,因为obj2本身的值就是新对象的地址,所以传进去的就是这个地址。
你可以参考下!!!!!!!!!!!!!!!!!
大哥 你不能把
this.data.lists
当做参数传递进去呀~~~你应该这么写
@乾隆 说的是对的,
你传的实际上还是一个“值”,而不是引用。
但你可以试一下传:this.datas,然后函数体内这样赋值:
新建一个vue调用方法就可以把值传出去了