AngularJS资源:仅当非空时发送查询参数

时间:2019-04-12 18:33:50

标签: angularjs angularjs-resource

我有一个Angularjs资源,在一种方法中,如果该查询参数非空,我想将查询参数发送到后端。不创建其他方法就可以实现吗?

示例资源方法:

get: {
      method: 'GET',
      url: /api/:token?source=:source,
      paramSerializer: someSerializer
    },

调用该方法的代码是

myResource.get({token: '1234'}, {source: <some source>});

令牌是必需的,但源是可选的,因此有时它不会传递到上述调用中。因此,如果为源提供了一个值,我希望能够发送源。如果未提供源值,则我根本不想发送源。例如,如果源为空,则调用将变为/ api / 1234;如果将源设置为some_source,则调用将变为/ api / 1234?source = some_source。

使用上面的代码,如果源为空,那么当源为空时,我看到请求为'/ api / 1234?source ='。

2 个答案:

答案 0 :(得分:1)

如果您通过get.params {}传递查询参数,则AngularJS将自动处理剥离未定义的属性。

答案 1 :(得分:1)

只需定义没有额外参数的网址模板:

get: {
      method: 'GET',
      url: "/api/:token",
    },

然后在调用操作时添加额外的参数:

myResource.get({token: '1234', source: <some source>});

多余的参数将作为查询参数自动添加到url中。

从文档中:

  

参数对象中的每个键值都首先绑定到url模板(如果存在),然后将多余的键附加到?之后的url搜索查询中。

有关更多信息,请参见