如何在指令中使用`ng-bind`来排序值

时间:2017-05-19 05:55:09

标签: angularjs sorting angular-directive

我从控制器到指令获取集合。我在哪里附加模板。

我需要在这里完成两件事

  1. 加载集合 - 让它进行排序
  2. 在输入更改时,(模型更改)需要重新排序数组值。
  3. 我的尝试都不行。任何人在这里澄清问题并对问题进行排序?

    这是我的代码:

    status,weather,longitude,latitude,timestamp
    ok,rainy,10.12,17.45,14569003
    ok,sunny,11.34,16.78,14569000
    

    Live Demo

1 个答案:

答案 0 :(得分:1)

怎么样?使用带有自己的过滤器的原生角度排序,也将整个对象传递给指令,因为使用3个独立的平面数组在那里工作可能很棘手。 plnkr

var temp = [
  "<ul><li ng-repeat='obj in slice | myOrder:obj:reverse'>",
  "<input ng-model='obj.pin' type='text'/></li></ul>"
  ]

app.filter('myOrder', function() {
  return function(items, field, reverse) {
    var filtered = [];
    angular.forEach(items, function(item) {
      filtered.push(item);
    });
    filtered.sort(function (a, b) {
      return (parseInt(a.pin) > parseInt(b.pin) ? 1 : -1);
    });
    if(reverse) filtered.reverse();
    return filtered;
  };
});



app.directive("customGrid", function($timeout,$filter){
  return{
    scope:{ 
      "pages":"="
    },
    template:temp.join(''),
    link : function( scope, element, attrs ){
      scope.slice = null;
      $timeout(function(){
       scope.slice = scope.pages;
       console.log(scope.slice,scope.pages)
      })


      //console.log( sorted ); //not sorting
    }
  }
})

修改 Plnkr without orderBy 不过,如果不了解细节,很难说。项目要求。我可以说,根据自己的经验,使用一些虚拟重复技术(或者在表格的情况下,使用一些与Angular一起使用的专用vanilla脚本)会更好。