【问题标题】:Passing params from controller to service将参数从控制器传递到服务
【发布时间】:2018-10-16 14:32:14
【问题描述】:

我有一个控制器:

function BenefitsController($scope, $state, Authentication, UsersService) {

  //this
  var vm = this;

  var username = Authentication.username;

  // get benefits
  UsersService.listItems(function (resource, headers) {
    vm.items = resource;
}

我已经定义了一个用户服务,然后。

  UsersService.$inject = ['$resource'];

  function UsersService($resource) {
    var Users = $resource('/api/users', {}, {
      update: {
        method: 'PUT'
      },
      listItems: {
        method: 'GET',
        isArray: true,
        url: '/api/users/benefits/:username',
        params: {
          provider: '@username'
        }
      }
    });

    return Users;
  }

我的问题是,如何通过控制器将用户名发送到服务。这是正确的做法吗?

【问题讨论】:

    标签: angularjs express


    【解决方案1】:

    试试这样的:

    function UsersService($resource) {
        var Users = $resource('/api/users', {}, {
          update: {
        method: 'PUT'
          },
          listItems: {
            method: 'GET',
            isArray: true,
            url: '/api/users/benefits/:username',
            params: {
              username: '@username'
            }
          }
        });
    
        return Users;
      }
    

    然后你可以调用:

    UsersService.listItems({username: username }, function (resource, headers) {
        vm.items = resource;
    }, 
    function(err) {
        // Error handling
    });
    

    jsFiddle:jsfiddle.net/gtrwzsn1/3079

    【讨论】:

    • 我得到一个错误:TypeError: UsersService.listItems(...).then is not a function
    • 我已经更新了答案,并添加了 jsFiddle jsfiddle.net/gtrwzsn1/3079
    猜你喜欢
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多