问题:
使用ajax获取数据的时候是正常的,但是渲染数据的时候el-option没有更新。
代码:
$.ajax({
url: url,
async: true,
data: {
'projectId' : me.projectId
},
type: 'POST',
success: function (data) {
let result = JSON.parse(data);
this.assignToArrs = [];
for (let index = 0; index < result.data.length; index++) {
var dataArr = result.data[index];
var assignTo = {};
assignTo.value = dataArr.userName;
assignTo.label = dataArr.userLink;
this.assignToArrs.push(assignTo);
}
},
error: function (e) {},
complete: function () {}
})
原因:
在ajax中的this会指向ajax本身,而不再是vue实例本身。
解决方法:
在请求ajax外面定义一下 var me = this ,让 this 指向 vue 。
var me = this;
$.ajax({
url: url,
async: true,
data: {
'projectId' : this.projectId
},
type: 'POST',
success: function (data) {
let result = JSON.parse(data);
me.assignToArrs = [];
for (let index = 0; index < result.data.length; index++) {
var dataArr = result.data[index];
var assignTo = {};
assignTo.value = dataArr.userName;
assignTo.label = dataArr.userLink;
me.assignToArrs.push(assignTo);
}
},
error: function (e) {},
complete: function () {}
})
vue项目引入全局的axios
下载:
npm install axios --save
引入:
import axios from "axios"
Vue.prototype.$axios = axios
使用:
this.$axios({
url: "api/login",
method: "post"
})