我有一个用于查询 OData 服务的角度提供程序。
现在我正在尝试在该提供程序上构建一个 $filter 函数,以便我可以在整个应用程序中使用它。
我遇到的问题,到目前为止还没有解决,是 URL 的查询部分需要以 '$filter=' 开头,当有一个过滤器但有多个过滤器时我可以处理得很好被添加为 ' 和 {query go here}'。
示例查询将是:
http://www.example.com/odata/Restaurants/?$filter=id eq 2 and city eq 'Los Angeles' and substringof("Lagasse", chef)&$top=20
我将数组中的所有过滤器发送给提供者。理想情况下,我会为数组中的第一个过滤器使用“$filter=#{firstFilter}”,其余过滤器使用“和#{remainingFilter}”,但我不确定如何构建此代码。
我当前的代码使用多个 if 语句来检查是否存在过滤器,但是由于构建 url 的性质,它使过滤器之一始终是强制性的。我想避免这种情况。
例如:
var filter = "$filter=id eq 2";
if (city) {
filter += " and city eq #{cityName}";
}
if (chef) {
filter += " and substringof(#{chefName}, chef)";
}
现在每次用户输入查询时,他们都必须指定一个 id。
我们没有使用 BreezeJS、JayData 或任何其他库。严格来说是 AngularJS,特别是 $http,而不是 $resource。