V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yakczh
V2EX  ›  问与答

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

  •  
  •   yakczh · 2014-12-31 17:14:35 +08:00 · 2592 次点击
    这是一个创建于 3632 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如
    $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 跟排序的结果一致?
    8 条回复    2014-12-31 22:35:43 +08:00
    zhangxiao
        1
    zhangxiao  
       2014-12-31 17:27:22 +08:00 via Android
    在controller里排序然后赋值?
    Dannytmp
        2
    Dannytmp  
       2014-12-31 18:08:57 +08:00
    多写一个方法吧,每次操作调用一下
    jsonline
        3
    jsonline  
       2014-12-31 18:10:38 +08:00 via Android
    你只改data 不要改dom
    yimity
        4
    yimity  
       2014-12-31 18:18:54 +08:00 via Android
    你给firends排了序,为什么,它还会不变呢?
    yakczh
        5
    yakczh  
    OP
       2014-12-31 20:03:22 +08:00
    @yimity 排序只显示在页面上 你点排序以后 在Controle打印数据 console.log($scope.friends) 每次都是一样的
    p2p
        6
    p2p  
       2014-12-31 20:45:37 +08:00 via iPhone
    scope里数据一致意义何在?

    获取filter后的顺序可这样:

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

    样例:
    http://jsfiddle.net/b7hb7xbL/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4983 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 09:08 · PVG 17:08 · LAX 01:08 · JFK 04:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.