最近使用vue.js的过程中遇到了,一个问题。用ajax请求后台的值给vue元素赋值之后属性值任然为空。搞了很久很不理解。 声明属性
data:{ q:{ tableName:null, count_date:null, p01:null, p02:null, }, showList: true, title: null, movaReport77: {}, colModel:{} }赋值代码,其中vm为Vue的实例名:
getTableMsg:function () { $.get(baseURL + "movareport77/report/field/"+vm.q.tableName, function(r){ vm.colModel = r.tableMsg;
});
alert(JSON.stringify(vm.colModel));
}
第二段代码中弹出的内容是空值,但是如果我把弹出的方法体放到请求的回调函数里却可以弹出内容,如下代码元素vm.colModel的值为返回值。getTableMsg:function () { $.get(baseURL + "movareport77/report/field/"+vm.q.tableName, function(r){ vm.colModel = r.tableMsg; alert(JSON.stringify(vm.colModel)); });
}
Vue的赋值机制那当然啦,ajax是不是异步的啊,你在外面肯定拿不到值啊######你写在$.get的回调里面,就是在ajax返回值后再alert,肯定可以拿到值啊######这是js异步的回调机制,和vue一点关系没有######异步,这个和vue没关系######ajax是异步请求 当请求还没完成 后面就alert当然是获取不到值
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。