首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将项目从JSON对象推送到角js中的下拉列表

将项目从JSON对象推送到角js中的下拉列表
EN

Stack Overflow用户
提问于 2016-02-10 13:16:02
回答 2查看 212关注 0票数 1

我有一个json文件

代码语言:javascript
复制
var myJson = {
   "Number of Devices":2,
   "Block Devices":{
      "bdev0":{
         "Backend_Device_Path":"/dev/ram1",
         "Capacity":"16777216",
         "Bytes_Written":9848,
         "timestamp":"4365093970",
         "IO_Operations":87204,
         "Guest_Device_Name":"vdb",
         "Bytes_Read":107619,
         "Guest_IP_Address":"192.168.26.88"
      },
      "bdev1":{
         "Backend_Device_Path":"/dev/ram2",
         "Capacity":"16777216",
         "Bytes_Written":10062,
         "timestamp":"9365093970",
         "IO_Operations":93789,
         "Guest_Device_Name":"vdb",
         "Bytes_Read":116524,
         "Guest_IP_Address":"192.168.26.100"
      }
   }
}

我想在下拉菜单中推送块设备的名称。这些名称是bdev0和bdev1,在看了一些示例之后,我尝试了下面的代码,但是我只是在下拉列表中返回对象

视图

代码语言:javascript
复制
<select ng-model="selectedDevice" ng-options="item as devices['Block Devices'] for item in selectdevice">
    <option value="">Select Device</option>
   </select>

和控制器

代码语言:javascript
复制
    .controller('timeSeriesCtrl', function($scope, $timeout, $http) {

    $scope.selectedDevice = null;
    $scope.selectdevice = [];
    $scope.bytesRead = [];
    $scope.bytesWritten = [];
    $scope.IoOps = [];
    $scope.currentTime = [];
    var path = 'http://orbit5.ds.cs.umu.se:8888/vrio/debug/blk'


function getData(){
  $http.get(path)
  .success(function(data){
    $scope.devices = data
    angular.forEach($scope.devices['Block Devices'], function(value, key){

           $scope.selectdevice = key;
})


  })
}

getData();





  });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-10 13:20:04

删除forEach的所有代码,只需使用ng-options(key,value)语法

代码语言:javascript
复制
function getData(){
  $http.get(path)
  .success(function(data){
    $scope.devices = data
    //angular.forEach($scope.devices['Block Devices'], function(value, key){
       //$scope.selectdevice = key;
    //   value.key = key;
    //})
  });

在html中:

代码语言:javascript
复制
<select ng-model="selectedDevice" 
      ng-options="item as key  for (key,item) in devices['Block Devices'] ">
    <option value="">Select Device</option>
</select>

小提琴:https://jsfiddle.net/ncapito/4mqFJ/6/

票数 2
EN

Stack Overflow用户

发布于 2016-02-10 13:32:53

object.toString() = [object object]. Object.prototype.toString()

您可以使用(key, content)语法来显示键。

代码语言:javascript
复制
<select ng-model="selectedItem">
      <option ng-repeat="(key, content) in myjson['Block Devices']" value="{{item}}">{{key}}</option>
</select>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35316327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档