Svelte 输入绑定 JSON 数组
Svelte input bind JSON array
我遵循了 this svelte 教程,我想知道我是否可以将这个组绑定到 JSON 数组而不是简单的数组,例如我想做一个行星选择器:
<script>
let planets = [{
name: 'Jupiter',
enable: false
},
{
name: 'Saturn',
enable: false
},
{
name: 'Uran',
enable: false
},
{
name: 'Neptun',
enable: false
},
{
name: 'Pluto',
enable: true
},
];
$: planets, console.log(planets)
</script>
{#each planets as planet}
<label>
<input type=checkbox bind:group={planets} name={planet.name} value={planet}>
{planet.name}
</label>
{/each}
This 是一个 REPL。我想知道是否有一种方法可以在每个循环中正确绑定 JSON 数组(启用具有输入值的数组字段)。现在它会在您单击每个项目时弹出,正如您在 REPL console.log 中看到的那样,我只想取消选中它。
用bind:checked属性显示正确的方式
<input type=checkbox bind:checked={planet.enable} value={planet}>
但这不会更改 array.enable 单击时的值。我可以在这里实现行星阵列的责任吗?
我认为问题在于您将值设置为 planet。当您删除它并仅使用选中的 属性 时,数组将更新为正确的值。
<script>
let planets = [{
name: 'Jupiter',
enable: false,
},
{
name: 'Saturn',
enable: false
},
{
name: 'Uran',
enable: false
},
{
name: 'Neptun',
enable: false
},
{
name: 'Pluto',
enable: true
},
];
$: planets, console.log(planets)
</script>
{#each planets as planet}
<label>
<input type=checkbox bind:checked={planet.enable}>
{planet.name}
</label>
{/each}
你可以查看我的REPL。
这是更新的屏幕截图:
我遵循了 this svelte 教程,我想知道我是否可以将这个组绑定到 JSON 数组而不是简单的数组,例如我想做一个行星选择器:
<script>
let planets = [{
name: 'Jupiter',
enable: false
},
{
name: 'Saturn',
enable: false
},
{
name: 'Uran',
enable: false
},
{
name: 'Neptun',
enable: false
},
{
name: 'Pluto',
enable: true
},
];
$: planets, console.log(planets)
</script>
{#each planets as planet}
<label>
<input type=checkbox bind:group={planets} name={planet.name} value={planet}>
{planet.name}
</label>
{/each}
This 是一个 REPL。我想知道是否有一种方法可以在每个循环中正确绑定 JSON 数组(启用具有输入值的数组字段)。现在它会在您单击每个项目时弹出,正如您在 REPL console.log 中看到的那样,我只想取消选中它。
用bind:checked属性显示正确的方式
<input type=checkbox bind:checked={planet.enable} value={planet}>
但这不会更改 array.enable 单击时的值。我可以在这里实现行星阵列的责任吗?
我认为问题在于您将值设置为 planet。当您删除它并仅使用选中的 属性 时,数组将更新为正确的值。
<script>
let planets = [{
name: 'Jupiter',
enable: false,
},
{
name: 'Saturn',
enable: false
},
{
name: 'Uran',
enable: false
},
{
name: 'Neptun',
enable: false
},
{
name: 'Pluto',
enable: true
},
];
$: planets, console.log(planets)
</script>
{#each planets as planet}
<label>
<input type=checkbox bind:checked={planet.enable}>
{planet.name}
</label>
{/each}
你可以查看我的REPL。
这是更新的屏幕截图: