Angular - 获取重复对象

问题描述:

我需要从ng-click中获取当前对象,因为我使用的是orderBy,因此它给了我相对错误的索引到范围对象。理想情况下,我希望能够点击对象(缩略图)并让$ scope.activePerson获得所有对象值。Angular - 获取重复对象

 [ 
     { 
      '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}}" 

感谢

+0

不用担心关于索引....只是将整个对象传递给ng-click函数。也看看'limitTo:length:start'过滤器 – charlietfl

你可以使用排序依据,并从纳克重复复制当前对象,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> 
+0

这不行,尝试选择莎拉,托比会是活跃的人。 – ryeballar

+0

你是对的,检查更新的plunkr:http://plnkr.co/edit/UPwzeJ7iXcP1IRUB09BF 你只需要将该人复制到activePerson。 –

这只是personng-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-重复创建一个子范围,所以你需要在父范围内设置activePerson

+0

这是玉。谢谢,这也是一个解决方案。 –