2014-05-18 19 views
6

Questo è il mio codicepassare parametri aggiuntivi alla funzione di ordinamento personalizzato in AngularJS

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

Iterazione

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

Customsort

$scope.customSort = function(sale) { 


}; 

Attualmente nella funzione customSort ho tutti la vendita dati ma voglio anche passare il valore del predicato alla funzione in modo che possa ordinare di conseguenza (ordinare per nome se nam e viene cliccato, ordina per prezzo se si fa clic sul predicato del prezzo.)

Come posso passare il valore del predicato alla funzione customSort? Qualcuno può aiutarmi con questo? Grazie.

+1

utilizzare i due punti nel markup per delimitare gli argomenti [vedi documentazione filtro] (https://docs.angularjs.org/guide/filter) – charlietfl

+0

@charlietfl questa dovrebbe essere una risposta – Valerij

+0

@charlietfl [orderBy] (https://docs.angularjs.org/api/ng/filter/orderBy) sembra solo prendi un'espressione –

risposta

14

Si può chiamare il vostro ordinamento personalizzato con il predicato e restituire una chiusura essendo la funzione originale, ora la funzione ha accesso a predicare:

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

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


    }; 
}; 
+0

Questo è esattamente quello che stavo cercando. Grazie amico. – user727728

+0

Questo ha risolto il mio problema nel passare $ viewValue nella funzione di ritorno, tuttavia mi chiedo quanto sia performante qualcosa di simile. Prendo atto che su ogni tasto, l'ordinamento personalizzato 'fabbrica' chiamiamolo, viene chiamato. https://gist.github.com/jusopi/283887919b87cba5edb6 – jusopi

+1

@jusopi se viene chiamato solo su ogni sequenza di tasti, penso che sia improbabile che abbia un impatto notevole. se fosse chiamato per ogni iterazione del genere, potrebbero esserci problemi, ma ciò non dovrebbe accadere –

Problemi correlati