angularjs 在排序以后,只是改变界面的顺序,有没有办法可以实现 $scope.data 的实际顺序

2014-12-31 17:14:35 +08:00
 yakczh
比如
$scope.friends=[
{name:"John",phone:'555-1212',age:10},
{name:"Mary",phone:'555-9876',age:19},
{name:"Mike",phone:'555-4321',age:21},
{name:"Admin",phone:'555-5678',age:35},
{name:"Julie",phone:'555-8765',age:29}
];
$scope.predicate='-age';

无论怎么排序,实际 $scope.friends的位置是固定的, 有没有办法让这个friends 跟排序的结果一致?
2583 次点击
所在节点    问与答
8 条回复
zhangxiao
2014-12-31 17:27:22 +08:00
在controller里排序然后赋值?
Dannytmp
2014-12-31 18:08:57 +08:00
多写一个方法吧,每次操作调用一下
jsonline
2014-12-31 18:10:38 +08:00
你只改data 不要改dom
yimity
2014-12-31 18:18:54 +08:00
你给firends排了序,为什么,它还会不变呢?
yakczh
2014-12-31 20:03:22 +08:00
@yimity 排序只显示在页面上 你点排序以后 在Controle打印数据 console.log($scope.friends) 每次都是一样的
p2p
2014-12-31 20:45:37 +08:00
scope里数据一致意义何在?

获取filter后的顺序可这样:

$filter['orderBy'](.....);
EPr2hh6LADQWqRVH
2014-12-31 22:01:08 +08:00
排序插件不是有回调吗,你写个调friends顺序的回调函数注册进去就行了呗
hahastudio
2014-12-31 22:35:43 +08:00
这个有个 trick,
ng-repeat="friend in friends = ( friends | orderBy:predicate:reverse )"

样例:
http://jsfiddle.net/b7hb7xbL/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/158256

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX