- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的 Angular 应用程序中有一系列复选框过滤器,当用户在 View 中单击它们时,应该触发查询 API 以返回过滤结果的功能。我每次使用这些过滤器时都会起作用。但是,我很难弄清楚如何构建该函数,以便它可以容纳所有当前选定的过滤器。该函数调用利用 Mongoose/MongoDB 功能,让我们将与字段对应的键/值对直接传递到 post 请求的有效负载中。
这就是我最初拥有的(可以工作,但只能通过 if/else 语句一次处理一个过滤器)。它基本上说,如果“类型”是“lan”,则相应地分配值。如果没有提供任何值(即用户已取消选择所有过滤器),则只需发送 API 调用请求,不包含任何输入参数(此处最后一个“else”):
onFilterReceived(value, type) {
if (type === 'lan' && value) {
this.filtersService.getByFilter(this.page, this.pagesize, {
"services.workflow.status" : "consulting",
"languages.primary" : { $in: value }
});
} else if (type === 'zip' && value) {
this.filtersService.getByFilter(this.page, this.pagesize, {
"services.workflow.status" : "consulting",
"zipCode" : { $in: value }
});
} else {
this.filtersService.getByFilter(this.page, this.pagesize, {
"services.workflow.status" : "consulting"
});
}
我通过 Angular 的 Output() 和 EventEmitter() 发送“值”和相应的“类型”,如下所示:
<list [records]="records"
(sendLanguage)="onFilterReceived($event, type = 'lan')"
(sendZipcode)="onFilterReceived($event, type = 'zip')">
</list>
同样,上述所有内容都可以按原样工作。
但是,我想要做的是构建此函数,当收到的值是“lan”类型时,在这种情况下相应的“值”将应用于此处的“值”:
"languages.primary" : { $in: value }
然后,当收到的值具有相应类型的“zip”时,该“值”将应用于此处的“值”:
"zipCode" : { $in: value }
最终目标是我将能够通过 API 发送同时保存多个过滤器值的请求。
我已经尝试了多种配方,但到目前为止还无法使其按预期工作。我一直在使用“if/else”语句,就像上面一样,但同样,这只会允许我一次保存一个过滤器的值。我如何确保传递每个当前选定的过滤器值?
如果有人可以提供如何构建这种逻辑的基本示例,那将会非常有帮助。
最佳答案
body: any = {'services.workflow.status':'consulting'};
private processType(name: string, para: any) {
if (this.body[name]) // toggle filter, removing or adding
delete this.body[name];
else
this.body[name] = { $in: para };
}
onFilterReceived(para: any, type: string) {
if (type == 'lan') {
this.processType('languages.primary', para);
}
if (type == 'zip') {
this.processType('zipCode', para);
}
if (type == 'nat') {
this.processType('services.service', para);
}
console.log(this.body);
this.filtersService.getByFilter(this.page, this.pagesize, this.body)
.subscribe(resRecordsData => {
this.records = resRecordsData;
},
responseRecordsError => this.errorMsg = responseRecordsError
);
}
关于javascript - 在 Angular 应用程序中构建保存多个筛选器选择的值的 API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44013013/
我正在研究这个领域以获得实时对象检测。 视频示例: http://www.youtube.com/watch?v=Bm5qUG-06V8 http://www.youtube.com/watch?v=
问题 我正在为 C 语言的项目寻找一种数据结构来存储列表列表。我需要能够访问仅给定 n 的第 n 个列表(这些术语将被乱序访问)。各个列表将包含 1 到 M 之间的整数(为了具体起见,假设 M = 2
我有一个List (Maybe a),我想过滤出Nothing的实例。我大概已经做到了,但是对所需的代码量却不满意: removeNothingFromList : List (Maybe a) ->
我对 Blazor 有基本的输入 当我输入我认为无效的字符(例如“/”或“:/\\""|?* ]"; Search = Regex.Replace(args.Value.ToSt
我有一个主应用程序,允许用户编辑所有数据(大约 20 个字段)。更新后,我将其添加到服务总线主题中,系统的其他区域也订阅了该主题。 其中一个订阅仅关心单个字段(电话号码)是否更新。我想知道处理这个问题
我是ElasticSearch的新手,需要帮助解决以下问题: 我有一组包含多个产品的文档。我想通过“Apple”过滤产品属性product_brand并获取与过滤器匹配的产品数量。但是,结果应按文档I
我想过滤查询集中特定范围内的项目。这就是我的模型的样子 class modelEmployee(models.Model): user = models.ForeignKey(User, on
尽管数组 a 的大小不断增加,但我无法找到 8 位素数。它适用于较小的数字: #include #include int main() { int n,a[100000],i,m,k;
我不希望能够使用代码隐藏来搜索我的 gridview 结果。 我有一个按钮和一个 GridView :
我想使用 sift/surf 进行模板匹配。图像可以有 1...n 个目标。使用 surf/sift 只能提取一个目标。一种想法是将图像分割成多个片段,然后寻找筛选/冲浪匹配。它有效,但显然由于速度和
这是使用 Xodus API 限制实体查询的方法: final EntityIterable allUsers = txn.getAll(storeName).skip(skip).take(limi
我有 2 个 excel 文件:IDList.csv 和 Database.csv。 IDList 包含我要从数据库中过滤掉的 300 个 ID 号的列表,其中包含 2000 个条目(在数据库中留下
过滤 Treeview 节点的最佳/有效方法是什么? 例如:我输入“abc”,只有包含“abc”的节点可见。然后我输入 “abcd”,我应该会看到唯一包含 “abcd” 文本的节点。依此类推,所以每次
我有两个关于报告的 tablix,以及一个用于向 tablix 提供数据的数据集。我在报告中有一个多选参数,我需要根据该参数中的值过滤结果。 有什么区别,如果有,什么是更好的解决方案: 直接在数据集或
我对 flex 搜索/ NEST还是很陌生,需要一些帮助才能查询/过滤我的数据。 我有一个产品 list 。而且这些产品可以具有任意数量的选项,并具有与之相关的值。而且我需要能够按选项名称及其值来过滤
我正在使用过滤条件从原始表创建一个表,其中我的过滤值来自 SELECTEDVALUE 表格没有根据 SELECTEDVALUE 进行过滤,如果我用一个真实的值替换它就可以了。 代码(不起作用) Tra
我正在设置一个 MSBuild 项目来运行一些 NUnit 测试,使用 MSBuild Community Tasks Project 。 通过这些设置,我将能够运行 NUnit 测试:
我正在使用过滤条件从原始表创建一个表,其中我的过滤值来自 SELECTEDVALUE 表格没有根据 SELECTEDVALUE 进行过滤,如果我用一个真实的值替换它就可以了。 代码(不起作用) Tra
例如,我们有一个列表,我们想用特定的谓词将其分成两部分。 首先,我们可以使用filter和filterNot。 val trueList = list.filter(predicate) val fa
我尝试为 [Start] 使用某种范围: var calendar = outlookApplication.GetNamespace("MAPI").GetDefaultFolder(OlDefau
我是一名优秀的程序员,十分优秀!