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

时间:2019-07-17 17:32:57

标签: ember.js ember-data

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

例如:

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

2 个答案:

答案 0 :(得分:1)

有两种已建立的模式:

  1. 使用query parameters存储API查询中使用的过滤器值。查询参数支持立即重新加载更改时的模型挂钩。
  2. store.query()解决的DS.AdapterPopulatedRecordArray提供了一种update()方法,该方法将重新加载查询。

在大多数情况下,我会建议使用查询参数,因为它还允许共享和标记包括过滤器的应用程序状态。如果只是布尔值,就不会增加太多复杂性。

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

答案 1 :(得分:-1)

您可以从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();
  }
}