我如何订购模型?

时间:2019-09-09 09:08:36

标签: javascript ember.js

我是余烬的新手,而且我不知道如何按标题对电影列表进行排序。 我有一个带有模型钩子的路由索引:

export default Route.extend(RealtimeRouteMixin,{
  model() {
    return this.store.findAll('movie');
  }
});

加载此路由后,我将渲染一个组件。我在模板中设置了模型

{{landing-page
  add=(action 'addMovie')
  movies=model
}}

在此组件内部,还有其他子组件。其中一个是电影列表,我要在其中显示按标题排序的电影列表。

//landing-page template
{{movie-list-header}}

{{movie-list
  movies=this.movies
}}

{{add-movie-form add=this.add
}}
//movive-list template
{{#each movies as |movie|}}
  {{movie-list/movie-list-item
    movie=movie
  }}
  <hr />
{{/each}}

我不知道什么是最好的方法。我曾经考虑过要在路线中对模型进行排序,但是我不知道是否需要像这样

export default Route.extend(RealtimeRouteMixin,{
  model() {
    return this.store.findAll('movie').then(funcion(data){
        // sort here ???
    });
  }
});

3 个答案:

答案 0 :(得分:0)

您的方法可行。然后sortBy可以解决问题。

另一种方法是从控制器开始将其放置在组件层次结构中的某个位置。一个简单的计算属性即可解决问题。 There is also a computed property macro

答案 1 :(得分:0)

我更喜欢使用ember-composable-helpers处理模板中的简单排序,因为它以最少的样板量很好地对字符串进行了排序。安装该插件并重新启动ember服务器后,您可以使用sort-by帮助程序在模板中完成此操作。

//movie-list template
{{#each (sort-by "title" movies) as |movie|}}
  {{movie-list/movie-list-item
    movie=movie
  }}
  <hr />
{{/each}}

答案 2 :(得分:0)

在要对其模型进行属性排序的控制器/组件中,您可以提及以下计算出的属性:

sortedModel:sort('model','title:desc'),

您可以按以下方式导入排序: 从“ @ ember / object / computed”导入{sort};

现在在模板/车把中使用sortedModel而不是模型。我希望这是有道理的。请让我知道是否有任何疑问?