绑定嵌套对象 Select Svelte

Binding Nested Object Select Svelte

我正在尝试创建动态 Fieldset 表单数据,但 select 输入不会更改绑定数据

我做了这个回复 https://svelte.dev/repl/0dff600bd5134fb59d19e6ca4cb98fe6?version=3.48.0

<script>
    import Fieldset from "./Fieldset.svelte"
    let name = 'world';
    let fields = {Connection: {Setting1 : 1, Setting2 : 2 }}
</script>

<h1>Hello {name}!</h1>

<Fieldset bind:fields={fields.Connection}/>
<button on:click={()=> console.log(fields) }>
    Button
</button>

然后是我的 Fieldset

 <script>
        import Field from "./Field.svelte"
        export let fields;
    </script> 
    <form>
        {JSON.stringify(fields)}
        {#each Object.entries(fields) as [ValueTitle, Value]}
            <div class="mb-4 items-center">
                <label for={ValueTitle}>{ValueTitle} </label>
                Fieldset:{Value}
                <Field bind:dataValue={Value} />
            </div>
        {/each}
    </form>

字段:

 <script>
    import Selector from "./Selector.svelte"
    export let dataValue;
    let options = {Hans: 1, Christian: 2, Andersen:3};
</script>
Field:{dataValue}
<Selector
    bind:data={dataValue}
    options={options}
/>

最后 select或

 <script>
 export let data;
 export let options;
 </script>
    
  <select
  bind:value={data}    
  >
  {#each Object.entries(options) as [k, val]}
     <option class="p-2" value={val}>{k}</option>
  {/each}
  </select>

第一层的数据发生了变化,但不是一直都在变化这是为什么,我做错了什么

使用 Object.entries 创建与源分离的新对象。如果修改原始结果,源对象将不会受到影响。

如果要修改对象的属性,则必须将对象作为 whole/use 具有 属性 路径或索引的对象传入。

例如

<!-- In Fieldset -->
{#each Object.keys(fields) as key}
    <div class="mb-4 items-center">
        <label for={key}>{key}</label>
        Fieldset:{fields[key]}
        <Field bind:dataValue={fields[key]} />
    </div>
{/each}