使用ngResource

时间:2015-09-08 10:52:29

标签: angularjs response ngresource

我有一个问题所以响应不是一个字符串,但格式为{" 0":" 3"," 1":" 2"}。我会得到一个像数字一样的答案,因此在这种情况下是32。

app.factory('Claims', ['$resource', function($resource) {
    return $resource('/portal/rest/registerClaim', null,
        {
            'create': { method: 'POST' }
        });
    }]);

app.controller('ClaimCtrl', ['$scope', 'Claims', function($scope, Claims) {

    $scope.registerClaim = function (PIN) {
        console.log(PIN);
        var obj = {
                "t":t,
                "a":"t",
                "b":"z",
                "c":"x",
                "d":"q"
        };

           Claims.create(obj).$promise.then(function(resp) {
            //$scope.resp = resp;

            $scope.resp = Object.keys(resp).map(function(val) {
                return val;
              }).join('');

            console.log(resp);

    }
}]);

然后在html文件中我有

     <div class="response-group">
         <p>{{resp}}</p>
    </div>

1 个答案:

答案 0 :(得分:2)

就我理解你的问题而言,这可能是你所期待的:

var myArr = [];

for (var key in resp) {
  if (typeof resp[key] === 'string' || typeof resp[key] === 'number') {
    myArr.push(resp[key]);
  }  
}

$scope.resp = myArr.map(function(val) {
  return val;
}).join('');

确保在.then()回调中执行此操作。

这会将对象属性值转换为数组,然后可以使用join()函数将其转换为字符串。

{"0":"3", "1", "2"}

将成为:

["3", "2"]
Object.keys(obj)之后

,然后在其上调用.join(''),它将变为:

"32"

像这样使用:

    Claims.create(obj).$promise.then(function(resp) {

      var myArr = [];

      for (var key in resp) {
        if (typeof resp[key] === 'string' || typeof resp[key] === 'number') {
          myArr.push(resp[key]);
        }  
      }

      $scope.resp = myArr.map(function(val) {
        return val;
      }).join('');
    });