灰烬-在findAll

时间:2018-11-26 21:23:41

标签: ember.js emberfire

我在我的应用程序中使用Emberfire,并且我尝试findAll统计信息,然后按键对模型进行排序,如以下示例所示。但是,当我以这种方式进行排序时,我失去了查看模板中实时更新的能力,并且必须重新加载页面才能在视图中查看新数据/更新数据。

 model() {
    return this.store
      .findAll('stats', {
        reload: true,
        backgroundReload: true
      })
      .then(stats => stats.sortBy('date'));
  }

1 个答案:

答案 0 :(得分:1)

您必须在控制器或组件上定义一个计算属性,该属性将返回已排序的统计信息。不要在路线的模型挂钩处对数据进行排序。只需返回findAll的承诺即可。

例如:

def ask(question, answers):
    while True:
        choice = input(question).lower()
        if choice in answers:
            break
        print("I don't know what that means.")
    return choice

choice = ask("\nGo north or south? ", ["north", "n", "south", "s"])
if choice[0] == "n":
    print("\nYou went north!")
else: # the only other choice is "south"
    print("\nYou went south!")

此外,余烬提供了sort macro

//controller.js or component.js 
sortedStats: computed('model.@each.date', function() {
  return this.get('model').sortBy('date');
})

通过使用它,您可以更优雅地解决您的要求:

import { sort } from '@ember/object/computed';