问题:

使用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"
})