AngularJS如何使用orderby与货币值?

时间:2014-11-06 22:57:32

标签: angularjs sorting angularjs-filter

我试图在我的产品页面上进行排序。我在订购价格方面很挣扎,现在它订购价格,因为它们是字符串。降序结果如下:

$7.00
$6.00
$55.00
$42.00 

我想以这种方式显示它:

$55.00
$42.00
$7.00
$6.00

所以我没有完全以数字格式(他们开头有$)。

   // get sort options
            var predicate, reverse;
            switch ($scope.filter.sort) {
    case 'priceAsc':
                    predicate = 'sizes[0].price';
                    reverse = true;
                    break;
                case 'priceDesc':
                    predicate = 'sizes[0].price';
                    reverse = false;
                    break;
    }

     // order data object
            var orderBy = $filter('orderBy');
            $scope.products = orderBy($scope.products, '-' + predicate, reverse);

产品数组有大小数组,每个大小都有自己的价格。我怎么能解决它,任何建议?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

你可以尝试用函数

编写自己的过滤器顺序
$scope.priceValue = function(price) {
   return parseFloat(str.replace('$', price));
};

ng-repeat="price in prices | orderBy:priceValue"

答案 1 :(得分:0)

首先:从价格中删除$:

for (var i = 0; i < product.sizes.length; i++) {
    product.sizes[i].price.replace('?', '');
}

现在按尺寸订购ng-repeat,并使用货币过滤器显示。

<div ng-repeat="size in product.sizes | orderBy: size.price">Price: {{size.price | 'currency'}}</div>