2014-03-06 47 views
0

在angularjs控制器I有这样的代码:转换一个场与angularjs和Javascript对象数组数据到另一个值

var ysshControllers = angular.module('theControllers', []); 

ysshControllers.controller('CommonController', 
    function($scope, $http, $route) { 
     $scope.dbKey = $route.current.customInput; 
     $scope.urlToDb = 'https://' + $scope.dbKey + '/.json'; 
     $http.get($scope.urlToDb).success(function(data) { 
      var values = []; 
      for (var name in data) { 
       values.push(data[name]); 
      } 
      $scope.Items = values; 
      }); 
      // Initially order by date and time 
      $scope.orderProp = 'ac'; 
    } 
); 

它创建具有名称Items的对象阵列。关键值只是aa,ab,ac等。当用户从下拉菜单中输入数据时,我只想保存如下值:1,2,3,4,5,然后当数据导入网站时,将值转回。像0 = Bad; 5 = Very Good。因此,对于每个键名为ae的记录,我想将1,2,3,4,5的值转换为差,好,公平,良好,非常好。

我能弄清楚程序流程,我需要知道的是如何使用面向对象的JavaScript引用值我猜。

的数据结构是这样的:

C5_200630_Option 1 

    aa:"Option 1" 
    ab:"Toyota" 
    ac:6499 
    ad:"Truck" 
    ae:"Tacoma, Silver, 1/2 ton 4wd" 
    af:4 

我跑这就像代码:

alert(Object.keys($scope.UsedItems)); 

,它给的0,1,2,3,4值等所以我猜这个键值$scope.UsedItems只是数字。我不知道如何专门访问密钥和数值数据。什么是简单的方法,我可以在警报中显示数组的内容是什么?

我用这条线:

alert(data[name].ad); 

这将引用数据在每个记录的名称ad。所以这给了我一种识别记录中特定项目的方法。

好吧,我想出了一个解决方案:

  if (data[name].af === "3") { 
       data[name].af = "Awesome!"; 
      } 

即使我想出解决我的问题,我还是几乎不知道我在做什么。所以如果有更好的方法,让我知道。

回答

1

可以定义数组这样

var example = ["Bad", "Not Bad", "Fine", "Good", "Very Good"]; 

和而不是检查数据[名] .af每次的价值,你可以简单的设置像这样

data[name].af = example[data[name].af]; 

它给你结果你想要的,因为你想要的数据[名称] .af = 3应该罚款,例如[3]是你想要的...

相关问题