我有一个名为Place
的模型,该模型在具有构造函数的类中定义。它具有诸如lat
,lng
之类的属性。我有一些函数可以处理该模型上的数据,这些函数包含在模型中的models文件夹中名为place.ts
的文件中。现在,我有一项可与Places
配合使用的服务,例如下载,存储等。
我有一个函数,该函数根据传递的属性排序(等级,与用户的距离等)来排序并返回位置Place[]
的数组。
该函数应该放置在模型或服务中以获得良好的设计模式吗?由于仅操作Place
,因此我一直在考虑该模型,因为javascript Array
方法就是这样做的。
答案 0 :(得分:1)
它归结为共享资源的概念。如果您的模型Place.ts
将在多个服务之间共享,那么将功能放入模型中会更好。否则,您会将其作为private function
放在服务本身内部。
答案 1 :(得分:0)
我强烈建议使用管道对数组进行排序,您可以在多个组件中使用同一管道,从性能的角度来看(更改检测)管道也更好,
例如,角形排序管道。
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'sortBy'
})
export class SortByPipe implements PipeTransform {
transform(data: Array<any>, args?: any): any {
return data.sort(function(a, b) {
if (a[args] < b[args]) {
return -1;
} else if (a[args] > b[args]) {
return 1;
} else {
return 0;
}
});
}
}
排序运算符js(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)
关于管道的重要性,有一篇不错的文章,您可以根据需要阅读,(https://codeburst.io/angular-tips-the-importance-of-pipes-49be3b1e99e7) 希望这会有所帮助。