给定JSON和Angularjs中另一个对象的值,获取一个对象的值

时间:2014-07-13 16:22:57

标签: json angularjs

鉴于此JSON:

{
    "firstName": "John",
    "lastName" : "doe",
    "age"      : 26,
    "address"  :
    {
        "streetAddress": "naist street",
         "city"         : "Nara",
         "postalCode"   : "630-0192"
     },
     "phoneNumbers":
     [
         {
             "type"  : "iPhone",
             "number": "0123-4567-8888"
         },
         {
             "type"  : "home",
             "number": "0123-4567-8910"
         }
     ]
 }

Angularjs中有没有办法获得"数字"当"类型"的值等于iPhone或家庭?

我认为使用像JSONPath这样的东西很容易,但我很难让JSONPath与Angular很好地配合。如果在Angular有一个简单的方法,我喜欢听到它。

2 个答案:

答案 0 :(得分:0)

您首先需要访问该对象的phoneNumbers数组。

就像这样。

obj = { ..your object.. }

var phoneNumbers = obj.phoneNumbers;

如果您在标记中执行此操作,则可以使用带有管道语法的角度过滤器。

 {{ expression | filter }}

如果您在控制器中执行此操作,您仍然可以使用带有控制器语法的角度过滤器:

$filter('filtername')(arg1,arg2);

以下是过滤器的链接。

https://docs.angularjs.org/guide/filter

过滤器功能非常强大你甚至可以编写自己的自定义过滤器来完成你需要做的任何事情。

希望这有帮助。

答案 1 :(得分:0)

您可以使用$ filter服务,不要忘记将其注入控制器。请看这里:

http://jsbin.com/nacam/1/edit?html,js,output

 app.controller('firstCtrl', function($scope, $filter){

  $scope.user = {
    "firstName": "John",
    "lastName" : "doe",
    "age"      : 26,
    "address"  :
    {
        "streetAddress": "naist street",
         "city"         : "Nara",
         "postalCode"   : "630-0192"
     },
     "phoneNumbers":
     [
         {
             "type"  : "iPhone",
             "number": "0123-4567-8888"
         },
         {
             "type"  : "home",
             "number": "0123-4567-8910"
         }
     ]
 };
  //I've made assumption that only one number exist for iphone but of not you just get first one
  $scope.iphoneNumber = ($filter('filter')($scope.user.phoneNumbers, "iPhone"))[0].number;

});