2016-06-30 9 views
1

Ich versuche derzeit, die Sortierfunktion mit intelligenten Tabellen zu verwenden. Derzeit ist die Setup wir haben, ist, was wir intelligente Tabellen sind vorbei ist nur eine Kennung (dies ist nicht das eigentliche Beispiel - so ignorieren, wenn dieses bestimmte Beispiel optimiert werden kann, seine hypothetische den Punkt herüber zu erhalten):Angular Smart Tables st-sort-Funktion mit Parametern

[{'id': 1},{'id':4},{'id': 3},{'id':4} }] 

Jetzt basierend darauf zeigen wir sagen den Typ in 1 Spalte und eine Beschreibung in einem anderen. Beide werden in einem anderen Objekt nachgeschlagen. Ich würde gerne wissen, wie ich mit einer generischen Getter-Funktion sortieren kann, die ich nach der Objekt-Suche sortieren kann, anstatt mehrere benutzerdefinierte Getter-Funktionen zu erstellen.

Gerade jetzt muss ich dies tun:

<table> 
    <tr> 
     <th st-sort="sortByTypeDescription"> 
     </th> 
     <th st-sort="sortByTypeName"> 
     </th> 
    </tr> 
</table> 

$scope.sortByTypeDescription = function(row) { 
     return $scope.descriptions[row.id].description; 
} 

$scope.sortByTypeName = function(row) { 
     return $scope.name[row.id].name; 
} 

ich mich gefragt, ob es so etwas wie das ist was ich tun kann oder in den zusätzlichen Parameter in einem separaten Attribut senden, so dass die Funktion dynamisch ist:

<table> 
    <tr> 
     <th st-sort="sortColumn(descriptions,description)"> 
     </th> 
     <th st-sort="sortColumn(name,name)"> 
     </th> 
    </tr> 
</table> 

$scope.sortByTypeName = function(row,a,b) { 
     return $scope.[a][row.id][b]; 
} 
+1

Es ist ein Beispiel für benutzerdefinierte Sortierfunktion direkt in docs. Sehen Sie sich 'getters.firstName' Beispiel an – charlietfl

+0

@charlietfl Ich sehe das nicht im Dokument, können Sie klären, wo? Alles, was ich sehe, ist, dass Sie eine Funktion deklarieren können, aber keinen Verweis auf Parameter. – KingKongFrog

+0

@charlietfl ja getters.firstName ist eine benutzerdefinierte Funktion, aber ich kann keine Parameter senden. Beispiel: getters.firstName (firstParam, secondParam), auf das sich meine Frage bezieht. – KingKongFrog

Antwort

0

Von @ charlietfl's Kommentar: Werfen Sie einen Blick auf das Beispiel smart-tables' doc mit dem Getter-Beispiel. Für Ihren Fall könnten Sie dies tun:

$scope.getters={ 
    sortByTypeDescription: function (row) { 
     return $scope.descriptions[row.id].description; 
    } 
} 

und in dem HTML-Code:

<tr> 
    <th st-sort="getters.sortByTypeDescription"></th> 
</tr>