我有这个代码:
<div flex="66">
<h3>{{ hack.title }}</h3>
<h4>{{ hack.description }}</h4>
<h4>{{ hack.status }}</h4>
<p>Backs: {{ hacksCtrl.getBacks(hack.id) }}</p>
</div>
我基本上想按 Backs
排序,基本上意味着 likes
,所以喜欢的东西越多,它就会出现在页面的较高位置。
所以我这样做了,但它不起作用:
ng-repeat="hack in hacksCtrl.hacks | orderBy: hacksCtrl.getBacks()"
有什么想法吗?
谢谢
下面的 Controller :
import Chance from 'chance';
export default function(hack, $state, $sce, HacksService, user) {
const vm = this;
vm.hack = hack;
vm.trustSrc = function(src) {
return $sce.trustAsResourceUrl(src);
};
vm.save = function() {
HacksService.save(vm.hack);
$state.go('hacks.view', {
id: vm.hack.id
});
};
vm.create = function() {
const chance = new Chance();
vm.hack.id = chance.guid();
vm.hack.status = 'proposed';
vm.hack.createdBy = user.name;
vm.hack.userProfileImage = user.picture;
HacksService.create(vm.hack);
$state.go('hacks.view', {
id: vm.hack.id
});
};
vm.like = function(id, $event) {
$event.stopPropagation();
HacksService.like(id, user);
};
vm.hasLiked = function() {
const userId = user.id;
const likes = vm.hack.likes;
if (likes) {
return (likes.indexOf(userId) !== -1);
}
};
vm.getLikes = function() {
return (vm.hack.likes) ? vm.hack.likes.length : 0;
};
vm.isCreate = function() {
return !vm.hack;
};
vm.goToEdit = function(id) {
$state.go('hacks.edit', {
id: id
});
};
}
最佳答案
对于您的函数,传入整个 hack 对象,然后只需在 orderBy 语句中命名该函数
vm.getBacks = function(hack) {
return (hack.backers) ? hack.backers.length : 0;
};
你的 Angular 重复看起来像这样:
ng-repeat="hack in hacksCtrl.hacks | orderBy: hacksCtrl.getBacks"
关于javascript - Angular/html 中的 OrderBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34335690/