$ resource返回一个char数组而不是字符串,就像服务器的答案一样

时间:2016-12-22 09:19:20

标签: angularjs

我在angularJs中使用服务从服务器检索信息。 使用邮递员,如果我调用此URL http://localhost:8080/api/public/v1/indirizzo/zona?stradaId=5786&civico=53r服务器应答字符串0480170061900。

我的服务是

var resourceUrl =  'api/public/v1/indirizzo/:type';

    return $resource(resourceUrl, {}, {
        civico: {
            method: 'GET',
            isArray: false,
            params: {
                type: 'civico'
            },
            cache: true
        },
        autocomplete: {
            method: 'GET',
            isArray: true,
            params: {
                type: 'autocomplete'
            },
            cache: true
        },
        zona: {
            method: 'GET',
            isArray: falsem,
            params: {
                type: 'zona'
            },
            cache: true,
            transformResponse: []
        }
    });

在我的控制器中,我以这种方式称呼'zona'

function searchZona(stradaId, numeroCivico){
            vm.stradaId = stradaId;
            return Indirizzo.zona({stradaId: stradaId, civico: numeroCivico}).$promise.then(function(data){
                vm.zona = data;
                console.info("ZONA ID: ", vm.zona);
                return data;
            }, function(error){
                AlertService.error(error.data.message);
            });
        }

一切正常,但vm.zona有这个信息

{"0":"0","1":"4","2":"8","3":"0","4":"1","5":"7","6":"0","7":"0","8":"6","9":"1","10":"9","11":"0","12":"0"} 

为什么呢?可以在字符串中转换它,就像服务器的答案一样吗?

1 个答案:

答案 0 :(得分:1)

重要的是要意识到调用src/ yarn.lock node_modules 对象方法会立即返回一个空引用(对象或数组,具体取决于$resource)。从服务器返回数据后,将使用实际数据填充现有引用。

AngularJS框架使用angular.copy填充引用。如果源不是对象或数组,则不会复制任何内容。

isArray函数可以转换字符串响应,但它必须将响应转换为数组或对象才能使用angular.copy