使用 ngResource 更改对字符串的响应

Change in response to a string by using 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>

据我了解您的问题,这可能就是您要查找的内容:

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('');
    });