yakczh
V2EX  ›  问与答

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

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

    获取filter后的顺序可这样:

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

    样例:
    http://jsfiddle.net/b7hb7xbL/
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1699 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 10:29 · PVG 18:29 · LAX 02:29 · JFK 05:29
    ♥ Do have faith in what you're doing.