首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于Vuex-ORM的双向数据绑定

基于Vuex-ORM的双向数据绑定
EN

Stack Overflow用户
提问于 2019-07-26 11:04:23
回答 2查看 1.3K关注 0票数 2

在使用Vuex ORM时,是否有人知道库或已经描述过的实现表单双向数据绑定的模式?

我找到了几个库来帮助Vuex,但还没有专门针对Vuex-ORM的库:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-01 09:16:37

我不认为有任何预定义插件可以这样做,但你应该能够做同样的典型的Vuex状态使用setter和getter的计算属性.?

代码语言:javascript
复制
import User from '@/models/User'

export default {
  computed: {
    user: {
      get () {
        return User.find(1)
      },

      set (value) {
        User.update({
          where: 1,
          data: {
            name: value
          }
        })
      }
    }
  }
}
票数 3
EN

Stack Overflow用户

发布于 2020-02-08 20:07:22

按照石井起亚的想法,我想出了一个函数,用于为vuex-orm模型的所有字段生成计算属性,因为我使用uuid,所以我可以使用insertOrUpdate

此函数为Vue组件创建一个配置,该组件从vuex-orm模型读取和写入字段。该配置包含模型所有字段的计算属性,以允许使用v-model属性进行双向数据绑定。它还包含一个带有id字段的支持选项,因此组件需要与路由器视图相关联。

代码语言:javascript
复制
import {v4 as uuidv4} from 'uuid';

/**
 * @param {typeof import("@vuex-orm/core").Model} model
 * @returns {{props: Object, computed: Object}}
 * @this {VueComponent}
 */
export default model => {

  const fields = model.fields();
  const computed = {};
  for (const field in fields) {
    if (field !== 'id') {
      computed[field] = {
        get() {
          const item = model.find(this.$props.id);
          return item ? item[field] : fields[field].value;
        },
        set(value) {
          model.insertOrUpdate({
            data: {
              id: this.$props.id,
              [field]: value
            }
          });
        }
      };
    }
  }

  return {
    props: {
      id: {
        type: String,
        default: uuidv4
      }
    },
    computed
  };

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

https://stackoverflow.com/questions/57218760

复制
相关文章

相似问题

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