Vue的Missing required prop:"value"问题

在Vue中使用iView UI的Select控件时,发现chrome的console一直出现Missing required prop的报错,还是Vue的在v-model的使用不太熟悉,需要利用数据绑定解决问题。

在Vue中如下使用iView的Select控件,比如在x.vue的component中

<template>
    <div>
        <form v-on:submit.prevent="onSummit">
            <div>
                <label for="selectType">Type</label>
            <Select v-model="update.type" id="selectType">
                <Option>type1</Option>
                <Option>type2</Option>
            </Select>
            </div>
            <div>
                <button type="summit">
                    Summit
                </button>
            </div>
        </form>
    </div>
</template>

<script>
    import {Select, Option} from 'view-design';
    export default {
      name: 'X',
      components: {Select, Option},
      data () {
          return {
            update: {type: ''}  
          };
      },
      methods: {
          onSummit (e) {
              console.log(this.update);
          }
      }
    };
</script>

运行后会出现Missing required prop: “value"报错,如下图

报错的原因主要是因为v-model的绑定不能直接通过把Option手动写在Html中,而是需要修改为如下方式。

<template>
    <div>
        <form v-on:submit.prevent="onSummit">
            <div>
                <label for="selectType">Type</label>
            <Select v-model="update.type" id="selectType">
                <Option v-for="item in option" :value="item.value" :key="item.value">
                	{{ item.label }}
                </Option>
            </Select>
            </div>
            <div>
                <button type="summit">
                    Summit
                </button>
            </div>
        </form>
    </div>
</template>

<script>
    import {Select, Option} from 'view-design';
    export default {
      name: 'X',
      components: {Select, Option},
      data () {
          return {
            update: {type: ''},
            option: [
            	{
            		value: 1,
            		label: 'type1'
            	},
            	{
            		value: 2,
            		label: 'type2'
            	}
            ]
          };
      },
      methods: {
          onSummit (e) {
              console.log(this.update);
          }
      }
    };
</script>

此外,还有几个需要关注的细节点。

上面示例中使用的是iView4.0,所以出了需要npm install view-design –save之外,还需要在main.js中增加如下代码,从而全局可使用iView UI控件

import ViewUI from 'view-design';
import 'view-design/dist/styles/iview.css';
Vue.use(ViewUI);

另外,Vue的Form的提交需要拦截原有summit事件,否则会发生跳转,这里使用了

<form v-on:submit.prevent="onSummit">