2015-07-21 113 views
0

我需要從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

回答

1

你可以使用排序依據,並從納克重複複製當前對象,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。 –

3

這只是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

這是玉。謝謝,這也是一個解決方案。 –