首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >vue.js选择v-模型值而不是$(元素).val()

vue.js选择v-模型值而不是$(元素).val()
EN

Stack Overflow用户
提问于 2017-04-14 13:51:35
回答 1查看 570关注 0票数 1

我试图在路径加载时从缓存加载表单值,因此如果有人从一条路由导航到另一条路径,则不会丢失它们的设置。复选框和文本输入正常工作。只有选择似乎有问题。

以下是其中的要素:

代码语言:javascript
代码运行次数:0
运行
复制
<select id="client" name="client[]" multiple="" v-model="chosen_clients">
   <option v-for="client in clients" v-bind:client="client" :value="client.id">@{{ client.name }}</option>
</select>

首先,我检查缓存并更新地址栏:

代码语言:javascript
代码运行次数:0
运行
复制
beforeCreate: function(){
    if(sessionStorage.getItem('invoiceable')){
        router.push({ path: '/invoiceable?'+sessionStorage.getItem('invoiceable')});
    }
},

然后将数据绑定到地址栏:

代码语言:javascript
代码运行次数:0
运行
复制
data: function(){
    return {
        chosen_clients: this.$route.query['client[]'] ? (Array.isArray(this.$route.query['client[]']) ? this.$route.query['client[]'] : [this.$route.query['client[]']]) : [],
    }
},

稍后,在挂载之后,我希望获取数据并更新地址栏,但是有一个问题:

代码语言:javascript
代码运行次数:0
运行
复制
var data = $('#invoiceable-form').serialize();
//This information does not match
console.log(this.chosen_clients); //This is correct
console.log($('#client').val(); //This is empty, even though visually, the select has selected options

最后,$('#client').val()具有正确的值(这意味着明显选择的选项作为序列化表单的一部分出现。我知道这一点,因为我在console.logs上设置了beforeUpdate,在.serialized中不存在值后不到一秒钟,它就会出现,而不会与select进行任何交互。即使我手动设置$('#client').val(2,12);在.serialize()之前,正确的值也不存在。我可以通过手动将数据添加到.serialize的结果中来解决这个问题,但这感觉很麻烦。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-14 14:37:43

@Roy J是对的。选择选项尚未加载。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43412947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档