我需要在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}}"
由于
答案 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>