如何在控制器复选框状态更改时重新加载模型



给定一些mut布尔值的复选框,我们如何通过查询路由中的数据存储来使用这些布尔值自动更新模型?

例如:

model(params) {
  return this.store.query('email', {
    filter: {
      option1: controller.checkbox1, 
      option2: controller.checkbox2, 
      option3: controller.checkbox3
    }
  })
}

有两种已建立的模式:

  1. 使用查询参数存储 API 查询中使用的筛选器值。查询参数支持在开箱即用的更改时重新加载模型挂钩。
  2. store.query()解析的 DS.AdapterPopulatedRecordArray 提供了一个将重新加载查询的update()方法。

在大多数情况下,我建议使用查询参数,因为这也允许共享和书签应用程序状态,包括过滤器。如果只是关于布尔值,它不会增加很多复杂性。

您还可以RouterService过渡到类似于刷新路线的相同路线。但它有一些缺点,因为与其他选项相比,它增加了更多的复杂性,并且默认查询参数将包含在路由中。有关最后一个方法的更多详细信息,请参阅方法文档和路由器服务 RFC。

您可以从mut移动到操作并使用this.refresh()

{{input type="checkbox" checked=checkbox1 on-click=(action "refreshCheck")}}
{{input type="checkbox" checked=checkbox2 on-click=(action "refreshCheck")}}
{{input type="checkbox" checked=checkbox3 on-click=(action "refreshCheck")}}
actions: {
  refreshCheck(){
    this.refresh();
  }
}

最新更新