yakczh
V2EX  ›  问与答

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

  •  
  •   yakczh · Dec 31, 2014 · 3010 views
    This topic created in 4212 days ago, the information mentioned may be changed or developed.
    比如
    $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 replies    2014-12-31 22:35:43 +08:00
    zhangxiao
        1
    zhangxiao  
       Dec 31, 2014 via Android
    在controller里排序然后赋值?
    Dannytmp
        2
    Dannytmp  
       Dec 31, 2014
    多写一个方法吧,每次操作调用一下
    jsonline
        3
    jsonline  
       Dec 31, 2014 via Android
    你只改data 不要改dom
    yimity
        4
    yimity  
       Dec 31, 2014 via Android
    你给firends排了序,为什么,它还会不变呢?
    yakczh
        5
    yakczh  
    OP
       Dec 31, 2014
    @yimity 排序只显示在页面上 你点排序以后 在Controle打印数据 console.log($scope.friends) 每次都是一样的
    p2p
        6
    p2p  
       Dec 31, 2014 via iPhone
    scope里数据一致意义何在?

    获取filter后的顺序可这样:

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

    样例:
    http://jsfiddle.net/b7hb7xbL/
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3286 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 11:21 · PVG 19:21 · LAX 04:21 · JFK 07:21
    ♥ Do have faith in what you're doing.