嵌套Axios请求中的VueJS数据未在视图中呈现

时间:2018-07-30 04:20:07

标签: vue.js axios

我正在尝试使用VueJS和Axios在页面上列出API中的一组帖子。我面临的问题是,需要针对该特定帖子使用单独的API调用来检索其中的一条数据(帖子url),并且它们在初始API调用中提供了该数据的url。我的第一部分工作正常,但是当值 显示在Vue devtools中时,我无法在视图中呈现href。

JS

const vm = new Vue({
  el: '#app',
  data: {
    posts: []
  },
  mounted() {
    this.getPosts();
  },
  methods: {
    getPosts() {
      axios.get("api_url")
      .then((response) => {
        this.posts = response.data.posts;
        // Get URL for each post from separate API call
        this.posts.map(post => {
          axios.get(post.details_url+"&output=json")
          .then((response) => {
            post.official_url = response.data.post.pet_details_url;
          }).catch( error => { console.log(error); });
        });
      }).catch( error => { console.log(error); });
    }
  }
});

HTML

<div id="app">    
  <div v-for="post in posts">
    <a :href="post.official_url"> //href won't render
      <h2>{{ post.title }}</h2>
      <p>{{ post.text }}</p>
    </a>
  </div>
</div>

Vue DevTools中显示的数据

1 个答案:

答案 0 :(得分:2)

可能是reactive problem。您可以尝试Vue.set

getPosts() {
    let vm = this
    axios.get("api_url")
    .then((response) => {
      this.posts = response.data.posts;
      // Get URL for each post from separate API call

      this.posts.map((post, index) => {
        axios.get(post.details_url+"&output=json")
        .then((response) => {
          post.official_url = response.data.post.pet_details_url;
          Vue.set(vm.posts, index, JSON.parse(JSON.stringify(post)))
        }).catch( error => { console.log(error); });
      });
    }).catch( error => { console.log(error); });
  }