vue.js 在Pinia商店状态更新后,模板中的数据似乎没有React

w80xi6nr  于 2023-01-09  发布在  Vue.js
关注(0)|答案(2)|浏览(334)

当我创建一个widget,然后更新aWidget时,选择必须出现,但似乎aWidget没有得到更新。只有当aWidget的初始状态为空数组模板时,才会出现错误:

<select class="fSelect" v-if="bShowWidgetSelect" v-model="iSelectedWidgetNoOption">
    <option v-for="(aWidget, iWidgetNo) in aWidgets" @click="switchSelectedWidget(iWidgetNo)" :value="iWidgetNo">{{ aWidget.widget_name }}</option>
</select>

皮尼亚州:

state: () => {
    return {
        aWidgets: [],
        aSelectedWidgetData: [],
        aWidgetNumbers: [],
        iWidgetCount: 0,
        iSelectedWidgetNo: 0,
        iMaxCreateWidget: 0
    }
},

松果体作用:

async createWidget(oParams) {
        let oStore = this;
        await oWidgetRequests.createWidgetRequest(oParams)
            .then(function (oResponse) {
                let oCreatedWidget = oResponse.data.data.widget;
                let iWidgetNo = oCreatedWidget.widget_no;
                oStore.aWidgets[iWidgetNo] = oCreatedWidget;
                oStore.iSelectedWidgetNo = iWidgetNo;
                oStore.iWidgetCount = oStore.iWidgetCount + 1;
            })
            .catch(oError => {
                alert('Error\n' + oError.response.data.error.message_key);
            });
    }
6ie5vjzr

6ie5vjzr1#

您正在使用相同的名称命名两个变量:v-for="(aWidget, iWidgetNo) in aWidget".
尝试为内部循环变量使用其他名称:v-for="(myWidget, iWidgetNo) in aWidget"

kx5bkwkv

kx5bkwkv2#

如果aWidget数据最初为空,我更改了更新它的方式

/**
     * Request to create widget
     * @param oParams
     */
    async createWidget(oParams) {
        let oStore = this;
        await oWidgetRequests.createWidgetRequest(oParams)
            .then(function (oResponse) {
                let oCreatedWidget = oResponse.data.data.widget;
                let iWidgetNo = oCreatedWidget.widget_no;
                if (oStore.iWidgetCount === 0) {
                    oStore.aWidgets = {[iWidgetNo]: oCreatedWidget};
                } else {
                    oStore.aWidgets[iWidgetNo] = oCreatedWidget;
                }
                oStore.iSelectedWidgetNo = iWidgetNo;
                oStore.iWidgetCount++;
            })
            .catch(oError => {
                alert('Error\n' + oError.response.data.error.message_key);
            });
    }

相关问题