【问题标题】:Change in response to a string by using ngResource使用 ngResource 响应字符串的变化
【发布时间】:2015-09-09 17:19:37
【问题描述】:

我有一个问题,所以响应不是字符串,而是格式为 {"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>

【问题讨论】:

  • 您的问题是什么?您想将所有键值连接到一个字符串中吗?
  • 我想用 32 号字符串代替 {"0", "3", "1", "2"}。怎么办?
  • 检查我的答案,看看是否是你想要的。

标签: angularjs response ngresource


【解决方案1】:

据我了解您的问题,这可能是您正在寻找的内容:

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

【讨论】:

  • 此方法无效。现在,在使用 var myString = Object.keys (resp) .join (' '); 收到结果 01$promise$resolved,我想得到数字 32。你知道解决这个问题的另一种方法吗?
  • @phoenix37 我更新了答案,看看。我忘记了 map 函数以获取值而不是属性名称。现在,只要您对 resp 对象而不是 obj 对象执行该功能,它就可以工作。 :)
  • 对不起,我已经迷失在这一切中了。我不明白你的方式。
  • @phoenix37 我已经详细展示了如何使用它,希望对您有所帮助。
  • 好的,我理解得很慢,但不幸的是,响应仍然是 01$promise$resolved 类型。我也尝试了另一种 ng-repeat 方式,但是也没有成功:/
猜你喜欢
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-25
  • 1970-01-01
  • 2020-04-20
  • 1970-01-01
相关资源
最近更新 更多