首页 > 解决方案 > Vue.js v-model 到本地状态

问题描述

我通过道具将数据传递给我的组件。我使用beforeMount通过 data 函数将数据存储在本地状态。然后我需要更新那个本地状态onchange

我正在尝试使用 v-model 将数据绑定到本地状态,但是当我更改输入值时,它不会更改数据函数。

我想我错过了一些简单的东西......感谢您的帮助,谢谢!:)

HTML

<div id="labDataWrap" v-if="showLabData">
        <h2>Cannabinoid Profile</h2>
        <ul>
            <li v-for="( value, key ) in cannabanoidProfile" :class="[ key.toLowerCase() ]">
                <md-field class="md-focused">
                    <label> {{ key }} </label>
                    <md-input v-model="cannabanoidObj[key]" type="number" :name="key" :value="value">{{ value }}</md-input>
                </md-field>
            </li>   
        </ul>
        <h2>Terpene Profile</h2>
        <ul>
            <li v-for="( value, key ) in terpeneProfile" :class="[ key.toLowerCase() ]">
                <md-field class="md-focused">
                    <label> {{ key }} </label>
                    <md-input v-model="terpeneObj[key]" type="number" :name="key" :value="value">{{ value }}</md-input>
                </md-field>
            </li>
        </ul>
        <div class="buttonWrap">
            <md-button id="saveLabData" @click="saveLabData">Save</md-button>
            <md-button id="closeLabData" @click="toggleLabData">Close</md-button>
        </div>
    </div>

JS

name: "Row",
props: ["other props omitted for post","cannabanoidProfile", "terpeneProfile"],
beforeMount(){
    this.cannabanoidObj = this.cannabanoidProfile;
    this.terpeneObj = this.terpeneProfile;
},
data: function(){
    return {
        cannabanoidObj: {},
            terpeneObj: {},
            isDisabled: true,
            showLabData: false
        }
    },

标签: javascriptvue.jsv-model

解决方案


文档

由于现代 JavaScript 的限制(以及 Object.observe 的废弃),Vue 无法检测到属性的添加或删除。

更改您cannabanoidObj使用的属性vm.$set


推荐阅读