不确定标题是否准确,也不确定确切的术语。
假设我有一些代码,如下所示。
当我使用第一种方法加载单个资源时,我可以创建一个富模型类的实例,它在传递给map(.)的函数中包装/装饰普通的JS对象。
在第二种方法中,如果响应是一个当然是对象的数组,我如何做到这一点?
@Injectable()
export class CourseService {
constructor(private restangular: Restangular) {
}
public getCourse(id: number): Observable<any> {
return this.restangular.one("courses", id).get().map(response =>
new Course(response)
);
}
public getAllCourses(): Observable<any> {
return this.restangular.all("courses").getList().map(response => {
//an array of courses
console.log(response);
});
}
}发布于 2017-01-28 16:26:15
由于第二个方法接收数组,所以可以使用Array.map()迭代数组的值,并将每个值转换为Course实例:
public getAllCourses(): Observable<any> {
return this.restangular.all("courses").getList().map(response => {
return response.map(courseData => new Course(courseData));
});
}这段代码可能会引起混淆,因为:
.map()是Observable.map() (来自RxJS库)。.map()是Array.map() (平原JavaScript)。为了简洁起见,您可以将方法主体写在一行上(从而避免内部return):
public getAllCourses(): Observable<any> {
return this.restangular.all("courses").getList().map(response => response.map(courseData => new Course(courseData)));
}但读起来有点难。:)
发布于 2017-01-28 15:57:15
你对这种方法有什么看法?
@Injectable()
export class CourseService {
constructor(private restangular: Restangular) {
}
public getCourse(id: number): Observable<any> {
return this.restangular.one("courses", id).get().map(response =>
new Course(response)
);
}
public getAllCourses(): Observable<any> {
return this.restangular.all("courses").getList().map(response => {
//an array of courses
let courses = [];
for (let courseData of response) {
courses.push(new Course(courseData);
}
return courses;
});
}
}这适合你的问题吗?
发布于 2017-01-28 16:11:16
你可以简单地用
public getAllCourses(): Observable<Course[]> {
return this.restangular.all("courses").getList().map((resp: Response) => resp.json());
}https://stackoverflow.com/questions/41911568
复制相似问题