使参数在 angularjs 资源中可选

Make a param optional in an angularjs resource

本文关键字:资源 angularjs 参数      更新时间:2023-09-26

我想在角度 js 资源中使参数可选,如下所示:

当前实现:

  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,所以我想让 id 成为可选的参数,而不是传递 null。这能做到吗?

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

只需发送

TrackResource.info({})如果您不想要第二个选项,它将在查询中自动变为 null,请确保您不要在 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' } },
      }
    );
  }