我有一个关于在视图上应用数学计算和排序值的问题。我很确定我可以事先做这些计算,但我想知道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,等等。
如果需要更多信息,请告诉我们!谢谢!
答案 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;
<强>更新强>
我注意到您还想要一个确定是添加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);
};
});