我正在使用Vuejs开发一个演示应用程序,作为其中的一部分,我需要从本地.json文件中获取一些地图数据,获取其中的某些部分(如lat/long值),然后将其放入适当的数据对象中,以便它们可以显示在地图上。在进行了大量搜索之后,使用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回调内部获取数据,但是我看不到我需要做什么。这条路会起作用吗?还是有更好的办法?
发布于 2018-05-15 04:32:13
我不知道你想在什么地方访问这个函数之外。例如,您可以通过$.getJSON将self.data = data的结果分配给Vue的实例数据,然后可以在$.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()
}
}发布于 2018-05-15 04:41:13
我认为您正在寻找一种方法来使用您的数据对象在您的方法内。您可以使用this访问数据对象的:
this.markers = data;最新情况:
在您的示例中,您的方法中有另一个作用域(回调),因此您可以使用View。就在您的getJSON行之前,这样定义它:
var vm = this;然后,在回调内部,您可以访问数据对象:
vm.markers = data;请注意,如果您使用的是旧版本的vue (低于2.x ),则需要这样使用:
this.$data.markers = data;https://stackoverflow.com/questions/50342339
复制相似问题