使用Component和<select>输入的Vue对象同步

时间:2019-02-17 07:42:16

标签: vue.js vuejs2 vue-component

我需要使用   
<脚本>   module.exports = {     道具:['variable_options','condition']   } 我需要类似标准的.sync修饰符,但是它似乎不适用于带有对象的选择输入: 条件是一个具有id,name和type属性的对象,这些属性来自variable_options数组中的变量对象。我曾尝试做一个initial_condition道具,然后像docs推荐的那样在选择输入上做一个v-model ='selected_condition',但是我不知道如何与.sync修饰符一起使用。做:initial_condition.sync =“ rule.condition”是不正确的。 是否可以通过子组件中选定选项传递对象属性,并以反应方式更新父组件?数据对象的属性是: 规则: {   条件:{     ID: '',     名称: '',     类型:''   } }

1 个答案:

答案 0 :(得分:1)

发射<select>

$event.target.value引用HTMLSelectElement.value,它是一个字符串。该对象值将转换为字符串(返回"[object Object]"),这将阻止.sync正确更新原始对象。

一种解决方法是在HTMLSelectElement.selectedIndex属性中使用variable_options[]

<select @change="$emit('update:condition', variable_options[$event.target.selectedIndex])">

默认<select>

默认值是在<option>(而不是<select>)上设置的。您可以根据条件的ID将<option>.selected设置为true

<option v-for="variable in variable_options"
        :selected="condition.id === variable.id"
        ...>

demo

相关问题
最新问题