Javascript 如何在angular2服务呼叫期间进行筛选
我想在Angular 2上开发一个模型。在本例中,我有一个名为Javascript 如何在angular2服务呼叫期间进行筛选,javascript,angular,angular2-services,Javascript,Angular,Angular2 Services,我想在Angular 2上开发一个模型。在本例中,我有一个名为Layer的模型,其中有多个JSON条目: Layer.ts 我还有一个模拟层注入器用于模拟: 模拟层 在现实世界中,我只返回1个模型“9.1”或“8.7”。然而,我正处于模拟阶段,我现在正在提取我的两个示例 要为这些数据提供服务,我有一个层服务: layer.service.ts 函数getLayers()返回所有图层记录。 对于我正在制作的示例,如何仅返回那些适合某个变量的层(例如Model='9.1')?您可以在创建Promis
Layer
的模型,其中有多个JSON条目:
Layer.ts
我还有一个模拟层注入器用于模拟:
模拟层
在现实世界中,我只返回1个模型“9.1”或“8.7”。然而,我正处于模拟阶段,我现在正在提取我的两个示例
要为这些数据提供服务,我有一个层服务:
layer.service.ts
函数getLayers()
返回所有图层记录。
对于我正在制作的示例,如何仅返回那些适合某个变量的层(例如Model='9.1'
)?您可以在创建Promise
之前使用:
getLayers() {
return Promise.resolve(LAYERS.filter(layer => layer.model === 9.1));
}
看
更新:根据事实,为什么
==
而不是=
?
=
是属性,因此:
LAYERS.filter(layer => layer.model = 9.1)
在这种情况下是完全错误的。它没有过滤任何东西,它(在plunker中试用)基本上覆盖了每个层。model
到9.1
另一方面,=
是严格相等运算符:
LAYERS.filter(layer => layer.model === 9.1)
上面的代码将生成一个数组,其中内容是每个层元素,这些元素的模型属性严格等于9.1
要了解“严格”部分的更多信息,请查看。好的,很高兴它有所帮助。我正在制作一个plunker来演示它,因为我已经成功了,不管怎样,它在这里:干杯!哦,重要的一点是:正确的是layer.model===9.1
,而不是layer.model=9.1
!知道了。为什么===而不是=?那太棒了。非常感谢如何通过过滤来过滤承诺?
getLayers() {
return Promise.resolve(LAYERS.filter(layer => layer.model === 9.1));
}
LAYERS.filter(layer => layer.model = 9.1)
LAYERS.filter(layer => layer.model === 9.1)