如何将动态页面 :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)
})

vue.js router documentation

中查看更多详细信息

最佳实践:

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)
 })
}