Angular - 获取ng-repeat对象

时间:2015-07-21 00:54:55

标签: javascript html json angularjs angularjs-ng-repeat

我需要在ng-click上从ng-repeat中取出当前对象,我不能使用$ index因为我使用orderBy因此它给了我相对于范围的错误索引宾语。理想我希望能够点击对象(缩略图)并让$ scope.activePerson获得所有对象值。

我的数据结构如下:

      [
        {
          'name': 'john'
        },
        {
          'name': 'toby'
        },
        {
          'name': 'sarah'
        }
      ]

这非常简化,我的真实物体有30多个KV对和子对象。我重复了10个对象(分4个)。

我目前的HTML是:

.item.fourth(ng-repeat="person in people | orderBy:'-name' " ng-show="$index <= 3" nid="{{person.guid}}"

由于

2 个答案:

答案 0 :(得分:3)

它只是person中的ng-repeat="person in people";

我不确定你使用的是什么样的降价,你肯定没有html,但是你需要这样的东西:

<div 
     ng-repeat="person in people | orderBy:'-name' " 
     ng-show="$index <= 3" 
     nid="{{person.guid}}" 
     ng-click="activePerson = person">
</div>

请注意,ng-repeat会创建子范围,因此您希望已在父范围中设置activePerson

答案 1 :(得分:2)

你可以使用orderBy并从ng-repeat中复制当前对象,see this plunkr.相关代码:

<强>控制器

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.stuff = [
        {
          'name': 'john'
        },
        {
          'name': 'toby'
        },
        {
          'name': 'sarah'
        }
      ];

    $scope.setActivePerson = function (obj) {
      $scope.activePerson = obj;
    };
});

查看

<body ng-controller="MainCtrl">
    <div ng-repeat="thing in stuff | orderBy: 'name'">
      <input type="radio" ng-click="setActivePerson(thing)" />
      {{ thing.name }}
    </div>
    <br />
    <div ng-model="activePerson">Active: {{ activePerson.name }}</div>
  </body>