首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jQuery $.getJSON()从Vuejs方法中的本地json文件获取数据

使用jQuery $.getJSON()从Vuejs方法中的本地json文件获取数据
EN

Stack Overflow用户
提问于 2018-05-15 04:28:41
回答 2查看 3.7K关注 0票数 0

我正在使用Vuejs开发一个演示应用程序,作为其中的一部分,我需要从本地.json文件中获取一些地图数据,获取其中的某些部分(如lat/long值),然后将其放入适当的数据对象中,以便它们可以显示在地图上。在进行了大量搜索之后,使用jQuery的$.getJSON()方法似乎是最简单的方法。但是,我无法理解的是如何从$.getJSON回调中获取数据到我的Vue markers对象。

以下是我的相关代码:

代码语言:javascript
复制
<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回调内部获取数据,但是我看不到我需要做什么。这条路会起作用吗?还是有更好的办法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-15 04:32:13

我不知道你想在什么地方访问这个函数之外。例如,您可以通过$.getJSONself.data = data的结果分配给Vue的实例数据,然后可以在$.getJSON之外访问它

代码语言:javascript
复制
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()
  }
}
票数 0
EN

Stack Overflow用户

发布于 2018-05-15 04:41:13

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

代码语言:javascript
复制
this.markers = data;

最新情况:

在您的示例中,您的方法中有另一个作用域(回调),因此您可以使用View。就在您的getJSON行之前,这样定义它:

代码语言:javascript
复制
var vm = this;

然后,在回调内部,您可以访问数据对象:

代码语言:javascript
复制
vm.markers = data;

请注意,如果您使用的是旧版本的vue (低于2.x ),则需要这样使用:

代码语言:javascript
复制
this.$data.markers = data;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50342339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档