获取使用jQuery $ .getJSON Vuejs方法从本地JSON文件数据()(Get dat

2019-10-29 23:07发布

我在一个演示应用程序使用工作Vuejs,并作为其中的一部分,我需要从本地上传.json文件得到一些地图数据,得到的某些部分(如纬度/长值),然后把它放到适当的数据对象,因此它们可以在地图上显示。 做搜索了很多之后,它似乎是最简单的方法是使用jQuery的$.getJSON()方法。 不过,我无法弄清楚是如何从内部获得的数据$.getJSON回调到我的Vue公司markers对象。

这里是我的相关代码:

<script>
import _ from 'lodash'
import $ from 'jquery'

export default {
  name: 'HelloWorld',
  data () {
    return {
      center: {lat: 37.541885, lng: -77.440624},
      markers: []
    }
  },
  methods: {
    getMarkers: function () {
      var apparatus = {}
      var address = []
      var description = {}
      $.getJSON('../static/event1.json', function (data) {
        // What do I do here to get outside of this function so
        // I can manipulate it?
        apparatus = data.apparatus
        address = data.address
        description = data.description
      })
    }
  },
  created () {
    this.getMarkers()
  }
}
</script>

正如你可以通过评论看到上面,我需要从内部获得的数据$.getJSON回调,但我看不出什么,我需要做的。 请问这样的工作,或者是有没有更好的办法?

Answer 1:

我不知道你要访问此功能之外在哪里。 例如,您可以分配的结果$.getJSON通过对Vue公司的实例数据self.data = data ,那么您可以在外部访问它$.getJSON

export default {
  name: 'HelloWorld',
  data () {
    return {
      center: {lat: 37.541885, lng: -77.440624},
      markers: [],
      data: null
    }
  },
  methods: {
    getMarkers: function () {
      var apparatus = {}
      var address = []
      var description = {}
      var self = this
      $.getJSON('../static/event1.json', function (data) {
        self.data = data // then you can access data outside of your function by reference this.data


        // What do I do here to get outside of this function so
        // I can manipulate it?

        apparatus = data.apparatus
        address = data.address
        description = data.description
      })
    }
  },
  created () {
    this.getMarkers()
  }
}


Answer 2:

我认为你正在寻找一种方式来使用你的数据对象的方法内的。 您可以使用this来获取您的数据对象的访问:

this.markers = data;

更新:

你的情况,你有另一范围,你的方法(你的回调),所以你定义使用视图模型。 只是你的getJSON前行,定义它是这样的:

var vm = this;

然后回调里面,你可以访问你的数据对象:

vm.markers = data;

请注意,如果您使用的是旧版本的VUE公司(以下2.X),你需要使用这样的:

this.$data.markers = data;


文章来源: Get data from local json file in Vuejs method using jQuery $.getJSON()