HTTP request config component: do not mutate prop

use an event-driven mutation scheme, i.e., adapt the common v-model
approach to bind data to the child component.
This commit is contained in:
Bernhard Kirchen 2024-06-26 23:01:27 +02:00
parent 6b19b877c6
commit 9911dec279
2 changed files with 13 additions and 4 deletions

View File

@ -63,11 +63,20 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'; import { defineComponent } from 'vue';
import type { HttpRequestConfig } from '@/types/HttpRequestConfig';
import InputElement from '@/components/InputElement.vue'; import InputElement from '@/components/InputElement.vue';
export default defineComponent({ export default defineComponent({
props: { props: { 'modelValue': Object as () => HttpRequestConfig },
'cfg': { type: Object, required: true } computed: {
cfg: {
get(): HttpRequestConfig {
return this.modelValue || {} as HttpRequestConfig;
},
set(newValue: HttpRequestConfig): void {
this.$emit('update:modelValue', newValue);
}
}
}, },
components: { components: {
InputElement InputElement

View File

@ -143,7 +143,7 @@
<div v-if="httpJson.enabled"> <div v-if="httpJson.enabled">
<HttpRequestSettings :cfg="httpJson.http_request" v-if="index == 0 || powerMeterConfigList.http_json.individual_requests"/> <HttpRequestSettings v-model="httpJson.http_request" v-if="index == 0 || powerMeterConfigList.http_json.individual_requests"/>
<InputElement :label="$t('powermeteradmin.valueJsonPath')" <InputElement :label="$t('powermeteradmin.valueJsonPath')"
v-model="httpJson.json_path" v-model="httpJson.json_path"
@ -204,7 +204,7 @@
:postfix="$t('powermeteradmin.seconds')" :postfix="$t('powermeteradmin.seconds')"
wide /> wide />
<HttpRequestSettings :cfg="powerMeterConfigList.http_sml.http_request" /> <HttpRequestSettings v-model="powerMeterConfigList.http_sml.http_request" />
</CardElement> </CardElement>
<CardElement <CardElement