选择带有restangular或angular的嵌套数组元素

Posted

技术标签:

【中文标题】选择带有restangular或angular的嵌套数组元素【英文标题】:Select nested array element with restangular or angular 【发布时间】:2015-05-31 12:50:24 【问题描述】:

我似乎很难从使用 restangular 或 angular 从 mongo/mongoose 返回的数组中读取/查询嵌套的 json 元素。

我可以写入嵌套元素,但不能读取/查询。

例如,为了澄清数据被返回并保存在 $scope.data 中。但是我如何编写 restangular 或 angular 从 $scope.data 获取第二级键和值。

更新 - 额外信息

这是 $scope.data 中的数据:

[

    "_id": "551528ecbb8253446cb26e4f",
    "location": "London Office",
    "hostname": "lon-asa-01",
    "device": "Switch-MLS",
    "model": "Cisco 3750",
    "softwareImage": "1.2",
    "serialNumber": "123456",
    "subnets": [
        
            "range": "10.0.100.0/24",
            "type": "Client"
        ,
        
            "range": "10.0.101.0/24",
            "type": "Server"
        
    ],
    "ipAddresses": [
        
            "ipAddress": "10.0.100.1",
            "type": "Inside"
        ,
        
            "ipAddress": "10.0.101.254",
            "type": "Outside"
        
    ]

]

使用 angular 我希望能够 data.ipAddresses.ipAddress 和 data.ipAddresses.type 来获取嵌套元素中的键/值对,以便我可以

<tr>
    <td> data.ipAddresses.type </td>
    <td> data.ipAddresses.ipAddress </td>
</tr>

【问题讨论】:

问题不清楚。您能否添加一个示例,说明您正在尝试实现的目标? 用额外的解释更新了主要问题。 你能试试 $scope.ipAddresses = $scope.data.ipAddresses,这会给你一个对象数组:"ipAddresses": [ "ipAddress": "10.0.100.1", " type": "Inside" , "ipAddress": "10.0.101.254", "type": "Outside" ] 所以你应该能够使用 ng-repeat 遍历 $scope.ipAdresses。 嗨 Jax,我已经完成了以下操作,但 $scope.ipAddresses 在 ng-repeat 或 ipAddresses.type 、 ipAddresses.ipAddress 中似乎不可用? 【参考方案1】:

谢谢大家的帮助。

最后这对我有用:是的,我知道我使用了 ul li,但我只是在做原型。

<ul ng-repeat="network in networks">
            <li> network._id</li>
            <li> network.location</li>
            <li> network.hostname</li>
            <li> network.device</li>
            <li>
                <ul ng-repeat="ip in network.ipAddresses">
                    <li> ip.type </li>
                    <li> ip.ipAddress </li>
                </ul>
            </li>

            <li> network.subnets</li>
            <li> network.iosVersion</li>
            <li> network.softwareImage</li>
            <li> network.serialNumber</li>

        </ul>

【讨论】:

【参考方案2】:

如果你想通过 $scope.data 进行操作,你可以做什么

<table>
  <tr ng-repeat="item in data">
    <td>
     item.ipAddresses[0].ipAddresses
     item.ipAddresses[0].type

    </td>
  </tr>
</table>

其中项对应于数组中的每个元素

如果你想通过 $scope.data.ipAddresses 进行操作:

<table>
  <tr ng-repeat="item in data[0].ipAddresses">
    <td>
     item.ipAddresses
     item.type

    </td>
  </tr>
</table>

【讨论】:

【参考方案3】:

你可以使用:

<tr>
    <td> data[0].ipAddresses[0].type </td>
    <td> data[0].ipAddresses[0].ipAddress </td>
</tr>

使用 ng-repeat:

<tr ng-repeat="item in data[0].ipAddresses">
    <td> item.type </td>
    <td> item.ipAddress </td>
</tr>

【讨论】:

这在一定程度上有效,但如果我有多个***记录设置 [0] 为所有人放置相同的 .type 和 .ipAddress?我怎样才能解决这个问题?

以上是关于选择带有restangular或angular的嵌套数组元素的主要内容,如果未能解决你的问题,请参考以下文章

带有 dbms_scheduler 的嵌套链,无法控制步骤的顺序

角度 $http.get / restangular 调用失败

angular.element vs document.getElementById 或带有旋转(忙碌)控制的 jQuery 选择器

Restangular POST 请求未按预期工作

如何使用 httpbackend 测试 Restangular http 调用以测试成功和错误情况?

Restangular 不会改变 Http Content-Type