我正在尝试在Angular 2上开发一个模型。在这种情况下,我有一个名为Layer
的模型,其中有多个JSON条目:
export class Layer {
model: number;
layer: string;
loaded: number;
}
我还有一个模型的模拟注入器:
import { Layer } from './layer';
export const LAYERS: Layer[] = [
{model: 9.1, layer: 'SIF', loaded: 1},
{model: 9.1, layer: 'AW', loaded: 1},
{model: 9.1, layer: 'DW', loaded: 1},
{model: 8.7, layer: 'SIF', loaded: 1},
{model: 8.7, layer: 'AW', loaded: 1},
{model: 8.7, layer: 'DW', loaded: 1}
];
在现实世界中,我只返回1个型号' 9.1'或者' 8.7'。但是,我处于模拟阶段,我现在就拉动我的两个例子。
为了服务这些数据,我有一个图层服务:
import { Injectable } from '@angular/core';
import { LAYERS } from './mock-layers';
@Injectable()
export class LayerService {
getLayers() {
return Promise.resolve(LAYERS);
}
}
函数getLayers()
返回所有图层记录。
对于我正在制作的示例,如何仅返回适合某个变量的图层(例如Model = '9.1'
)?
答案 0 :(得分:1)
您可以在创建Promise
之前使用Array#filter()
:
getLayers() {
return Promise.resolve(LAYERS.filter(layer => layer.model === 9.1));
}
===
而不是=
? =
是归因,所以:
LAYERS.filter(layer => layer.model = 9.1)
在这种情况下,这是完全错误的。它不会过滤任何内容,它(在plunker中尝试)基本上覆盖每个layer.model
到9.1
。
===
是 严格相等 运算符:
LAYERS.filter(layer => layer.model === 9.1)
上面的代码将生成一个数组,其中的内容是每个LAYERS
元素,model
属性严格等于到9.1
。
更严格地了解""部分,检查this link。