如何将动态页面 :id 传递给 Vue.js 中的 $http.get url
How do I pass a dynamic page :id to $http.get url in Vue.js
我已经设置了视图路由器:
router.map({
'/tracks/:id': {
component: SingleTrack
}
})
这是我的组件(使用硬编码 URL):
var SingleTrack = Vue.component('track', {
template: '#track-template',
data: function() {
return {
track: ''
}
},
ready: function() {
this.$http.get('//api.trax.dev/tracks/1', function (data) {
this.$set('track', data.track)
})
}
});
如何将 url/:id 传递到 $http.get
字符串的末尾,以便在加载该路由时动态获取正确的数据,例如:
ready: function(id) {
this.$http.get('//api.trax.dev/tracks/' + id, function (data) {
this.$set('track', data.track)
})
}
你应该可以从组件中获取路由参数 $route
属性 :
var itemId = this.$route.params.id;
this.$http.get('//api.trax.dev/tracks/' + itemId, function (data) {
this.$set('track', data.track)
})
中查看更多详细信息
最佳实践:
index.js(路由器)
{
path: '/tracks/:id',
name: 'SingleTrack',
component: SingleTrack,
props: (route) => {
const id = Number.parseInt(route.params.id);
return { id }
},
}
SingleTrack.vue
props: {
id: {
type: Number,
required: true,
},
},
mounted(){
this.$http.get('//api.trax.dev/tracks/' +this.id, function (data) {
this.$set('track', data.track)
})
}
我已经设置了视图路由器:
router.map({
'/tracks/:id': {
component: SingleTrack
}
})
这是我的组件(使用硬编码 URL):
var SingleTrack = Vue.component('track', {
template: '#track-template',
data: function() {
return {
track: ''
}
},
ready: function() {
this.$http.get('//api.trax.dev/tracks/1', function (data) {
this.$set('track', data.track)
})
}
});
如何将 url/:id 传递到 $http.get
字符串的末尾,以便在加载该路由时动态获取正确的数据,例如:
ready: function(id) {
this.$http.get('//api.trax.dev/tracks/' + id, function (data) {
this.$set('track', data.track)
})
}
你应该可以从组件中获取路由参数 $route
属性 :
var itemId = this.$route.params.id;
this.$http.get('//api.trax.dev/tracks/' + itemId, function (data) {
this.$set('track', data.track)
})
中查看更多详细信息
最佳实践:
index.js(路由器)
{
path: '/tracks/:id',
name: 'SingleTrack',
component: SingleTrack,
props: (route) => {
const id = Number.parseInt(route.params.id);
return { id }
},
}
SingleTrack.vue
props: {
id: {
type: Number,
required: true,
},
},
mounted(){
this.$http.get('//api.trax.dev/tracks/' +this.id, function (data) {
this.$set('track', data.track)
})
}