2016-06-30 12 views
1

現在、スマートテーブルでソート機能を使用しようとしています。現在、私たちが持っているセットアップはちょうど識別子であり、我々はスマートテーブルに渡しているものです(これは実際の例ではありません - この特定の例では、最適化することが可能であればその全体で、その仮想的な取得するためのポイントを無視する):角型スマートテーブルパラメータ付きst-sort関数

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

これに基づいて、1列にタイプを、別のカラムに説明を表示します。これらの両方は別のオブジェクトで参照されます。私はいくつかのカスタマイズされたゲッター関数を作成するのではなく、ソートするためにオブジェクトルックアップを渡すことができるジェネリックゲッター関数を使ってソートする方法を知りたいと思います。

今、私はこれをしなければならない。

<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; 
} 

機能が動的であるので、私は別の属性に追加のパラメータで行うか、送信することができますこのようなものがある場合、私は思っていた:

<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

をドキュメントでカスタムソート関数の右側の例があります。 'getters.firstName'を見てください。 – charlietfl

+0

@charlietfl文書にこれが表示されないのですが、どこで分かりますか?私が見る限り、あなたは関数を宣言することができますが、パラメータへの参照はありません。 – KingKongFrog

+0

@charlietflはいgetters.firstNameはカスタム関数ですが、パラメータを送信できません。たとえば:getters.firstName(firstParam、secondParam)これは私の質問が参照しているものです。 – KingKongFrog

答えて

0

@ charlietflのコメントから: smart-tables' docの例をgetter-exampleを使って見てください。あなたのケースでは、あなたがこれを行うことができます:

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

とhtmlで:

<tr> 
    <th st-sort="getters.sortByTypeDescription"></th> 
</tr> 
関連する問題