在angularjs资源中创建一个param可选项

时间:2014-12-23 19:55:08

标签: javascript angularjs

我想在角度js资源中创建一个param可选项,如下所示:

目前的实施:

  function TrackResource($resource) {
    return $resource(
      'track/:type/:id',
      { type: 'info', id: '@id' },
      {
        'info': { method: 'GET', params: { type: 'info', id: '@id' } },
        'live': { method: 'GET', params: { type: 'live', id: null } },
        'lyrics': { method: 'GET', params: { type: 'lyrics', id: '@id' } },
        'rand': { method: 'GET', params: { type: 'rand', id: null } },
        'recent': { method: 'GET', params: { type: 'recent', id: null } },
        'top': { method: 'GET', params: { type: 'top', id: '@days' } },
        'log': { method: 'GET', params: { type: 'log', id: '@id' } },
      }
    );
  }

所以id可以多次为null,所以我不想传递null,而是想让id成为一个可选的参数。可以这样做吗?

1 个答案:

答案 0 :(得分:3)

我发现的解决方案就是不在请求中发送该参数。

发送

TrackResource.info({})如果您不想要第二个选项,它会在查询中自动变为空,请确保您在ResourceStructure中不提及相同内容:

  function TrackResource($resource) {
    return $resource(
      'track/:type/:id',
      { type: 'info', id: '@id' },
      {
        'info': { method: 'GET', params: { type: 'info', id: '@id' } },
        'live': { method: 'GET', params: { type: 'live' } },
        'lyrics': { method: 'GET', params: { type: 'lyrics', id: '@id' } },
        'rand': { method: 'GET', params: { type: 'rand' } },
        'recent': { method: 'GET', params: { type: 'recent' } },
        'top': { method: 'GET', params: { type: 'top', id: '@days' } },
        'log': { method: 'GET', params: { type: 'log', id: '@id' } },
      }
    );
  }