2014-05-18 149 views
6

自定義排序功能這是我的代碼額外的參數傳遞到AngularJS

<a href="" ng-click="predicate = 'productname'; reverse=false">Productname</a> 
<a href="" ng-click="predicate = 'productprice'; reverse=false">Productprice</a> 

迭代

<div ng-repeat="sale in sales | orderBy:customSort"> 

Customsort功能

$scope.customSort = function(sale) { 


}; 

目前在customSort功能我得到的所有銷售數據,但我也希望將謂詞值傳遞給該函數,以便它可以相應地進行排序(如果是nam,則按名稱排序e被點擊,如果價格謂詞被點擊則按價格排序。)

如何將謂詞值傳遞給customSort函數?任何人都可以幫助我解決這個問題嗎?謝謝。

+1

使用冒號標記分隔參數[見過濾文檔( https://docs.angularjs.org/guide/filter) – charlietfl

+0

@charlietfl這應該是一個答案 – Valerij

+0

@charlietfl [orderBy](https://docs.angularjs.org/api/ng/filter/orderBy)似乎只是採取一個表達 –

回答

14

你可以調用與謂語您的自定義排序,並返回一個封口是你原來的功能,現在你的函數可以訪問斷言:

<div ng-repeat="sale in sales | orderBy:customSort(predicate)"> 

$scope.customSort = function(predicate) { 
    return function(sale) { 


    }; 
}; 
+0

這正是我正在尋找的。謝謝很多伴侶。 – user727728

+0

這解決了我將$ viewValue傳遞給返回函數的問題,但是我想知道如何執行這樣的事情。我注意到,在每次擊鍵時,自定義排序「工廠」讓我們只是調用它,被調用。 https://gist.github.com/jusopi/283887919b87cba5edb6 – jusopi

+1

@ jusopi如果僅在每次按鍵時調用它,我認爲它不太可能有任何明顯的影響。如果在每次迭代中調用它,那麼可能會有麻煩,但不應該發生 –