为了账号安全,请及时绑定邮箱和手机立即绑定

Vue.js v-for not rendering component

Vue.js v-for not rendering component

米脂 2022-08-18 16:35:04
我有以下问题,由于某种原因,v-for根本不会呈现。请在这里找到小提琴,https://jsfiddle.net/tadeyemi/k6s4gv85/ 我完全不知道为什么它不起作用。有人在乎透露一些线索吗?<div id="app">  <h1>Finds</h1>  <div>    <input ref="option">  </div>  <button v-if @click="addFind">    New Find  </button>   <p v-for="(option,idx) in options.slice(1)">    <span @click="removeOption(idx+1)">Option{{idx+1}}: {{option}}</span>  </p></div>和 JavaScript,如下所示:new Vue({  el: '#app',  data: {    options: [],    count:0  },  methods: {    addFind: function () {    var msg = this.$refs.option.value;    console.log(this.options);    if( msg.trim() != "" ){        this.count++;        var i = this.count;      this.options[i]= this.$refs.option.value.trim();    }    },    removeOption:function(index){    this.options.splice(index,1);    this.count--;    }  }});
查看完整描述

1 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

你的代码存在一些问题,但最突出的是你违反了这里解释的一些反应性规则:https://v2.vuejs.org/v2/guide/reactivity.html#For-Arrays

Vue 无法检测到数组的以下更改:

当您直接设置具有索引的项目时,例如 vm.items[indexOfItem] = newValue 当您修改数组的长度时,例如 vm.items.length = newLength

基本上:会工作,而不会this.options.push(msg.trim());this.options[i]= this.$refs.option.value.trim();

我稍微编辑了一下小提琴以使其工作:https://jsfiddle.net/63jyw7gz/


查看完整回答
反对 回复 2022-08-18
  • 1 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信