我有一个问题所以响应不是一个字符串,但格式为{" 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>
答案 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('');
});