如何使用查询参数更新模型并部分重新加载路径的DOM树

时间:2015-12-18 00:21:04

标签: javascript ember.js

我的路线包含一些包含搜索字段的表单(例如代码,名称等)以及在用户在这些字段上键入内容时更新结果的表格。

我已将所有表单字段绑定到控制器上各自的查询参数。因此,当ember将字段值传播到URI时,路由重新加载模型的参数使表更新。到目前为止一切都很好。

但是,当用户键入Ember重新加载整个路径的DOM树时,会对此设计产生副作用,使用户失去对该字段的关注。

所以,我想知道当用户在表单字段中不断输入他需要的内容时,我只能使表格中的结果更新。

他们都在同一条路线的HBS上,有一些组件。

1 个答案:

答案 0 :(得分:0)

一种解决方案可能是将其拆分为两条路线:

  1. 显示输入字段的一条路线。此路由控制器保存输入binidings的变量。
  2. 通过侦听父控制器上的更改来处理queryParams的子路由,并相应地显示结果。
  3. 对于子路由器控制器,您可以执行以下操作:

    needs: ['fieldscontroller'],
    // or fieldscontroller: Ember.inject.controller() if your are on a newer Ember version
    code: Ember.computed.alias('controllers.fieldscontroller.code'),
    name: Ember.computed.alias('controllers.fieldscontroller.name'),
    // or name: Ember.computed.alias('fieldscontroller.name') on newer Ember versions
    

    这样,只有您的子路由(带有结果)才会重新加载父路由中的更改。