AngularJS - 在视图中计算数据后的排序

时间:2014-12-17 16:10:29

标签: angularjs sorting

我有一个关于在视图上应用数学计算和排序值的问题。我很确定我可以事先做这些计算,但我想知道Angular之后是否有任何方法。这是我的jsFiddle。

http://jsfiddle.net/7q47kv2y/2/

$scope.value1="true";
$scope.numbers = [3, 5, 7, 4, 5, 8]
var d = new Date();
$scope.dayofmonth = d.getDate();

如您所见,它只是一个数字列表,后跟月份的日期。

当它在视图中显示时,我有一些数字进行一些数学计算。也许我错过了这个,但有没有办法对这些值进行排序?或者我需要在视图上显示之前完成所有操作。之前进行数学计算的问题是我的最终目标是基于一系列复选框和ng-show进行各种数学计算。

IE。如果选中一个框,则添加每个数字5,然后排序。 IE浏览器。如果未选中框,则减去5,等等。

如果需要更多信息,请告诉我们!谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用内置的orderBy角度过滤器:

<div ng-show="value1 =='true'" 
     ng-repeat="number in numbers | orderBy:identity">
         {{number + dayofmonth + 5}}
</div>

关于identity的说明:

您会注意到identity的订单。在Angular 1.3之前,您必须将参数传递给orderBy过滤器。在scope identity属性只是对角度标识函数的引用,它只返回传入的第一个参数:

$scope.identity = angular.identity;

Updated Fiddle


<强>更新

我注意到您还想要一个确定是添加5还是减5的复选框,因此我添加了另一个过滤器,以便您可以在同一个ng-repeat上执行此操作,这样您就不会必须隐藏/显示两组数字。

HTML:

{{number + dayofmonth  | change:value1:5}}

JS(过滤器):

angular.module('app', []).filter('change', function() {
  return function(input,positive,value) {
      return input + ((positive ? 1: -1) * value);
  };
});

Updated Fiddle