Vue.js - 组件模板不使用 v-for 渲染

Posted

技术标签:

【中文标题】Vue.js - 组件模板不使用 v-for 渲染【英文标题】:Vue.js - Component template not rendering with v-for 【发布时间】:2019-04-14 15:22:25 【问题描述】:

我有调用 ajax 到我的 api 的方法和返回的响应,我将它分配给一个数组。之后在带有v-for 的模板部分中显示数据。在我更改要显示的数据内容后,它只呈现一次。刷新后不再显示。

控制台没有错误,并且vue显示数组被返回的响应填充。

模板:

<template>
  <div class="row">
    <div class="col-12">
      <h5 class="component-title">Game board</h5>
      <button v-for="number in board" v-bind:key="number.results" :class="'col-1 btn btn-'+number.colors">number.positionToId</button>
    </div>
  </div>
</template>

脚本部分:

import RouletteApi from "@/services/api/Roulette";
export default 
  name: "GameBoard",
  data() 
    return 
      board: []
    ;
  ,
  created() 
    this.getBoardLayout();
  ,
  methods: 
    getBoardLayout() 
      RouletteApi.getLayout().then(response => 
        //this.rLayout.orgResponse = response;
        for (var i = 0; i < response.slots; i++) 
          this.board[i] = 
            results: response.results[i],
            positionToId: response.positionToId[i],
            colors: response.colors[i]
          ;
        
      );
    
  
;

我做错了什么?

【问题讨论】:

【参考方案1】:

使用该方法填充数组没有反应,因此请尝试使用push 函数:

methods: 
  getBoardLayout() 
    RouletteApi.getLayout().then(response => 
      //this.rLayout.orgResponse = response;
      for (var i = 0; i < response.slots; i++) 
        this.board.push(
          results: response.results[i],
          positionToId: response.positionToId[i],
          colors: response.colors[i]
        );
      
    );
  

或者使用this.$set实例方法:

 methods: 
    getBoardLayout() 
      RouletteApi.getLayout().then(response => 
        //this.rLayout.orgResponse = response;
        for (var i = 0; i < response.slots; i++) 
          this.$set(this.board,i, 
            results: response.results[i],
            positionToId: response.positionToId[i],
            colors: response.colors[i]
          );
        
      );
    
  

【讨论】:

以上是关于Vue.js - 组件模板不使用 v-for 渲染的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js 使用父数据渲染子组件

Vue.js 模板指令

Vue js数组反向导致v-for循环出错

Vue.js - v-for 不渲染 api 调用响应数据

Laravel 6 + Vue.js 无法挂载组件:未定义模板或渲染函数

Vue js 2-无法安装组件:未定义模板或渲染功能