我是余烬的新手,而且我不知道如何按标题对电影列表进行排序。 我有一个带有模型钩子的路由索引:
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 ???
});
}
});
答案 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而不是模型。我希望这是有道理的。请让我知道是否有任何疑问?