我有一个像<select>
这样的activity.status :
<script>
import Dropdown from './Dropdown.svelte'
let activity = {
id: 1,
projectName: "Test Project",
lead: {id: 10, value: "Unassigned"},
status: {id: 3, value: "Closed"},
statusDetail: {id: 15, value: "Missing Budget"}
}
let statusOptions = [
{ id:1, value:"Open"},
{ id:2, value:"On-Hold"},
{ id:3, value:"Closed"}
]
$:console.log(activity.status);
</script>
<select bind:value={activity.status}>
{#each statusOptions as option}
<option value={option} >{option.value}</option>
{/each}
</select>
<!-- <Dropdown options={statusOptions} bind:selected={activity.status}/> -->
$:console.log(activity.lead)
每次<select>
更新.
但是一旦我使用<Dropdown/>
它,它就会触发两次。这是组件:
<script>
export let selected = {}
export let options = [{id:0, value: "No Options..."}]
</script>
<select bind:value={selected}>
{#each options as option}
<option value={option} >{option.value}</option>
{/each}
</select>
我对 svelte 的了解不多,但我研究了 API 并在 stackoverflow 上进行了搜索。我唯一没有尝试的是发出自定义事件。但这似乎有点额外的代码和不雅致。我不介意双重更新,但它似乎很愚蠢。所以我想知道:为什么会这样?我应该发出自定义事件吗?还是我犯了一些基本错误?
谢谢你,菲利普