2014-11-06 43 views
2

我想對我的產品頁進行排序。我在訂購價格上掙扎,現在它命令它們,因爲它們是字符串。對於下降的結果是這樣的:AngularJS如何使用orderby與貨幣值?

$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); 

產品陣列具有尺寸陣列,每個尺寸都有自己的價格。我該如何解決它,有什麼建議?任何幫助將不勝感激。

+1

我認爲,最好的辦法是從服務器沒有格式化的價格(作爲數字)和格式在客戶端角度'貨幣'過濾器。可能嗎? – dubadub 2014-11-06 23:03:58

回答

2

你可以嘗試寫自己的過濾器排序依據功能

$scope.priceValue = function(price) { 
    return parseFloat(str.replace('$', price)); 
}; 

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

第一:刪除$價格從:

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

現在按大小對您的NG-重複,並與貨幣過濾器顯示。

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