Vue.js将所选复选框限制为5

Ada*_*dam 2 javascript checkbox vue.js

我需要将所选复选框的数量限制为5.我尝试使用:禁用,如下所示:

    <ul>
        <li v-for="item in providers">
            <input type="checkbox" 
               value="{{item.id}}" 
               id="{{item.id}}" 
               v-model="selected_providers" 
               :disabled="limit_reached" 
            >
        </li>
    </ul>
Run Code Online (Sandbox Code Playgroud)

然后:

new Vue({
    el: '#app',
    computed:{
        limit_reached: function(){
            if(this.selected_providers.length > 5){
                return true;
            }
            return false;
        }
    }
})
Run Code Online (Sandbox Code Playgroud)

这种工作,但当它达到5时,所有复选框都被禁用,你不能取消选中你不想要的复选框.

我也尝试用1毫秒的超时来拼接数组,这有效但感觉很难.有人可以推荐一下吗?

Bil*_*ell 9

基本上,如果尚未选择输入,则仅禁用输入,并且选择了超过4个输入.

我能想出的最简洁的方法是:

new Vue({
  el: '#app',
  data: {
    inputs: []
  }
})
Run Code Online (Sandbox Code Playgroud)

附:

<ul>
  <li v-for="n in 10">
    <label>
      <input
        type="checkbox"
        v-model="inputs"
        :value="n"
        :disabled="inputs.length > 4 && inputs.indexOf(n) === -1" 
        number> Item {{ n }} {{ inputs.indexOf(n) }}
    </label>
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

这是一个快速演示:https://jsfiddle.net/crswll/axemcp8d/1/