我正在使用ng-repeat显示联系人的信息。每个联系人都有详细信我试图抓住列表中的第一个对象。这是我的代码:
<div ng-repeat="contact in contactList() | filter:{type: 'direct'} | filter:{duration: '1 year'} | orderBy: 'Date'">
<div ng-click="selectedContact(contact)">
<div>{{contact.name}}</div>
<div>{{contact.type}}</div>
</div>
</div>
contactList()是一个调用服务的函数:
$scope.contactList = function () {
return ContactService.getContactList();
};
如何获取ng-repeat中的第一个联系对象?我想将该对象保存到其他窗口。
答案 0 :(得分:1)
您可以使用'track by $ index'并使用'ng-if'来确定它何时是第一个对象:
<div ng-repeat="contact in contactList()| filter:{type: 'direct'}| filter:{duration:'1 year'| orderBy: 'Date' | track by $index"
ng-if="$index == 0"
ng-init="someMethod()">
<div ng-click="selectedContact(contact)">
<div> {{contact.name}}</div>
<div>{{contact.type}}</div>
</div>
</div>
然后,您可以在控制器中使用“someMethod()”函数将对象保存到窗口对象或本地存储:
function someMethod(key, object) {
window.localStorage.setItem(key, object);
}
如果您想使用它,我已经编写了一个用于此事的对象:
var LocalStorageManager = {
setValue: function(key, value) {
window.localStorage.setItem(key, JSON.stringify(value));
},
getValue: function(key) {
try {
return JSON.parse(window.localStorage.getItem(key));
} catch (e) {
}
}
};
所以,你可以在你的'someMethod()中使用它和你的东西:
function someMethod(key, object) {
LocalStorageManager.setValue(key, object);
}
然后,要获取对象,您只需使用'getValue'方法调用您给对象的'key'。
答案 1 :(得分:1)
您可以将新范围属性设置为过滤和排序的结果。请注意,您如何使用()
:
<div ng-repeat="contact in contacts = (contactList() | filter:{type: 'direct'} | filter:{duration:'1 year'} | orderBy: 'Date')">
<div ng-click="selectedContact(contact)">
<div>{{contact.name}}</div>
<div>{{contact.type}}</div>
</div>
</div>
然后从这个列表中获取第一个,它只是[0]
:
{{ contacts[0] }}
答案 2 :(得分:1)
我猜你不想只显示一条记录,而且你还希望在应用过滤器/订购之后阵列中的第一条记录。如果是这种情况,我建议您在上一个条件之后添加别名,然后在控制器中引用该别名。
这是一个帮助显示的小提琴:
我建议你不要在ng-repeat中调用函数,而是引用一个已被调用的数组:
$array=['apple','orange'];
foreach($array as $v)
{
$stmt = $db->exec("Insert into test(fruit) VALUES ('$v')");
}
然后在你的控制器中:
<div ng-repeat="contact in contactList|
filter:{type: 'direct'}| filter:{duration:'1 year'}|
orderBy: 'Date' as filteredArray">
....
您将看到$ scope.filteredArray [0]将在排序数组中包含第一个元素。