当前位置: 首页 > 面试题库 >

角度资源将字符串的一维数组解析为2d

翟棋
2023-03-14
问题内容

来自服务器的以下JSON响应

[
    "hello",
    "world"
]

被此ngResource服务解析为2d数组

myService.factory('Name', function($resource){
    return $resource(site_url+'api/accounts/:accountId/names/', {}, {
        list: {method:'GET', params:{}, isArray:true}
    });
});

这样叫

$scope.names = Name.list({accountId:$scope.account.id}, function(e){
    console.log(e);
});

追踪到

[{"0":"h","1":"e","2":"l","3":"l","4":"o"},{"0":"w","1":"o","2":"r","3":"l","4":"d"}]

有什么提示吗?


问题答案:

TLDR; ngResource 期望的物体或阵列 对象 中的响应。

在操作列表isArray中将设置 为时truengResource
模块遍历响应中收到的每个项目,并创建一个新的Resource实例。为此,Angular在收到的项目和Resource类之间执行了深层复制,这为我们提供了具有特殊方法的对象($save$delete依此类推)

在此处检查源。

在内部使用 angular.copy
进行深度复制,此功能仅对 对象数组 起作用,当我们传递字符串时,它将像对待对象一样对待它。

通过提供对每个字符的顺序访问,JS中的字符串可以表现为数组。angular.copy传递字符串时将产生以下内容

angular.copy('hi',{})   => {0:'h', 1:'i'}

每个字符都将成为对象中的一个值,并将其索引设置为键。 ngResource 将提供具有属性0和的资源1

您的选择是:

使用较低级别的 $ http 服务

$http.get('/res').success(function(data){
  $scope.test = data;
});

json响应中返回对象数组

[{'data': "hello"}, {'data': "world"}]

拦截响应并更改您的数据

如果您无法修改服务器发回的数据并想使用 ngResource
,则需要转换响应。在这里阅读操作方法



 类似资料:
  • 在C++中将二维字符数组复制到一维数组字符串中最简单的方法是什么? 大概是这样的: 问候蒂尔曼

  • 如何在Kotlin中将字符串转换为字符串数组?为了证明这一点,我有: 我想把它转换成。

  • 问题内容: 如何将下面的 字符串 转换为 数组 ? 这是我要寻找的阵列, 问题答案: 您需要该函数,并且需要设置第二个参数以将数据放入数组中,而不是放入单个变量中。

  • 问题内容: 我有一个将存储Number对象的列表。该列表将通过分析字符串列表来填充,其中每个字符串都可以表示Number的任何子类。 如何将字符串解析为通用数字,而不是特定的整数或浮点数? 问题答案: 数字不能实例化,因为它是抽象类。我建议传入数字,但是如果您设置为字符串,则可以使用任何子类来解析它们, 要么 @请参阅NumberFormat

  • 问题内容: 我正在尝试解析JSON中的字符串,但不确定如何执行此操作。这是我尝试解析为PHP数组的字符串的示例。 是否有一些库可以接受id,名称和电子邮件并将其放入数组中? 问题答案: 可以使用完成,请确保将第二个参数设置为,因为您需要数组而不是对象。 输出:

  • 是否有一个内置的javascript函数可以解析: 到 或者我必须为此编写自定义函数吗?