Javascript 余烬:在树表中搜索

Javascript 余烬:在树表中搜索,javascript,ember.js,Javascript,Ember.js,我们有一个分层模型: segments demographic age language location interest art charity entertainment books movies music 我们将其放在一个具有可展开行的表中: ▶ segments 当您单击段旁边的箭头时,您将看到: ▼ segments ▶ demographic ▶ interest ▼ seg

我们有一个分层模型:

segments
  demographic
    age
    language
    location
  interest
    art
    charity
    entertainment
      books
      movies
      music
我们将其放在一个具有可展开行的表中:

▶ segments
当您单击
旁边的箭头时,您将看到:

▼ segments
  ▶ demographic
  ▶ interest
▼ segments
  ▶ demographic
  ▼ interest
      art
      charity
    ▶ entertainment
然后,当您单击兴趣旁边的箭头时,您将看到:

▼ segments
  ▶ demographic
  ▶ interest
▼ segments
  ▶ demographic
  ▼ interest
      art
      charity
    ▶ entertainment
你明白了

诀窍是,不可见的子节点还不在存储中(异步)。 单击箭头可从服务器获取子项。


现在,模型以这种方式在Ember数据中实现:

export default DS.Model.extend({
  name: DS.attr('string'),
  parent: DS.belongsTo('segment', {
    async: true
  }),
  children: DS.hasMany('segment', {
    async: true,
    inverse: 'parent'
  })
});

现在,我们要实现搜索功能:

  • 用户在搜索文本输入中键入内容
  • 服务器返回搜索结果
  • 我们把它放在桌子上
这里的问题是,我们想展示整个路径

比方说,我们搜索
o
,我们不仅希望看到包含字母
o
的结果,还希望看到所有的家长:

▼ segments
  ▼ demographic
      location
  ▼ interest
    ▼ entertainment
        books
        movies

问题:

假设我们从上面的示例中获取了所有项目

如果我们要呈现
兴趣
,则其子项列表不完整

它缺少
艺术
慈善
,这对这个视图来说很好。但是在模型中,
子类
认为它已加载,但它仅部分加载

这里应该采用什么方法

  • 使用“搜索模式”,当您放弃它时,重新加载子项
  • 在模型中为
    searchChildren
    设置单独的字段
  • 使用完全独立的模型进行搜索
  • 我们做错了吗
谢谢你的提示