【问题标题】:Api-Plaftom : vuetify generator : issues with nested entityApi-Plaftom:vuetify 生成器:嵌套实体的问题
【发布时间】:2020-07-21 20:51:38
【问题描述】:

我一直在使用 API 平台和 Vuetify 客户端生成器,他们做得很棒!

但现在我遇到了一个我无法解决的问题。

假设我在 Symfony 中有一个实体,它与另一个实体具有多对一关系。 Like : 带有字段标题的文章是指向包含 en、fr、de、... 字段的 Label 实体的链接。

默认情况下,客户端生成器做一个v-select,很好,但我想直接在Article视图中直接编辑Label中的fr、en等的值。

如果我尝试这样做,我会出错:

[vuex] 不会在突变处理程序之外改变 vuex 存储状态。

代码:

<v-text-field
      v-model="values.title.fr"          
      :label="$t('fr')"
/>

但这在同一个模板中

<v-text-field
            v-model="item.slug"
            :error-messages="slugErrors"
            :label="$t('slug')"
            @input="$v.item.slug.$touch()"
            @blur="$v.item.slug.$touch()"
            disabled
          />

【问题讨论】:

    标签: vue.js vuex vuetify.js api-platform.com


    【解决方案1】:

    由于您使用的是v-model,它会在您更改输入值时尝试改变状态值。

    所以使用 computed 属性作为模型并使用 set 函数进行变异。

    模板:

    <v-text-field
          v-model="fr"          
          :label="$t('fr')"
    />
    

    脚本:

    computed:{
        fr: {
            get(){ return this.values.title.fr; },
            set(value){ /* mutate state using commit() */ }
        }
    }
    

    【讨论】:

    • 是的,但是生成器使用了 vuex-map-fields。例如,在同一个模板中,我也可以完美地工作:
    • @GRUXXKi : values.title.fr 持有对状态值的引用,您不能直接改变状态值
    • 是的,但是突变是由 store 中的 updateField 生成的。请注意确定我如何强制提交...?
    • @GRUXXKi : 您可以在 set 函数中使用 commit 方法来更新状态值
    • 不,我无权访问提交,因为它是由 updateField 自动完成的。
    猜你喜欢
    • 2020-11-16
    • 2010-09-28
    • 2018-07-09
    • 2017-11-27
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    相关资源
    最近更新 更多