Vue.js双向数据绑定无法处理选择元素

时间:2015-11-10 11:57:53

标签: javascript data-binding vue.js

我试图根据某些条件设置我的select元素的值,但问题是我的模型正在更新,但DOM不是。

这是我尝试实现http://jsfiddle.net/chrislandeza/4Ly1xmrx/

的基本示例

基本上只是说如果我的select元素的值是1,那么将它设置为2

这里是上面提到的代码:

    <div id='app'>
        <select v-model="test">
            <option></option>
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>
        </select>
    </div>

    <script>
        new Vue({
            el: '#app',
            data: {
               test: ''
            },
            watch: {
               'test': function (newVal, oldVal) {
                   // some condition
                   if (newVal == 1) {
                        // manually set the value
                        this.test = '2';
                   }
                }
            }
        });
    </script>

我尝试使用方法并将其置于更改事件而不是观看模型,但它也无法正常工作。

有什么想法?建议非常感谢。

修改 我的临时解决方案是添加v-el =&#39; test&#39;我的选择元素的指令

<select v-model='test' v-el='test'>

并在设置模型的值后使用 this。$$。test.value = 2 手动设置元素的值。

if (newVal == 1) {
     // manually set the value
     this.test = '2';
     this.$$.test.value = 2
}

注意:我做的事情比这个例子更复杂/更现实 我现在对这个解决方案很好。我仍然在寻找更好的解决方案。

1 个答案:

答案 0 :(得分:0)

如果您检查值正在改变,它是否正常工作我没有看到问题。它的值改变而不是呈现给页面的内容