2016-06-18 8 views
1

私はグローバル検索を行い、データをコントローラ内に表示する場合にのみ動作します。しかし、フィルタを適用するとすぐに、検索で検索されません。角度グローバル検索はフィルタなしでのみ動作します

だから私は1429138800ような日付のタイムスタンプを持っていると私は、ビュー

{{ date }} 

でこれを持っていることが

動作しますが、私はこの{{date | date:'shortDate'}}ようshortdateを表示するようにフィルタを追加したとき、私は、検索しようとした場合1/17の場合は動作しません....フィルタを適用した後にどのように検索可能にすることができますか?

答えて

1

まあ、私はあなたがあなたのフィルタを実装する方法を知りませんが、あなたのフィルタリングされたデータのインスタンスの作成のために、あなたがこれを行うことができます:

{{newDate = (date | date:'shortDate')}} -> "1/17" 
{{newDate}} -> "1/17" 

だから今、あなたはnewDateの代わりdateでキーワードを検索することができます。
お手数ですが、

更新:
それともカスタムフィルタを書いて、あなたの主なデータを損なうことなく、それらに反復する前にデータを変換することができます。

app.filter('toDate', ['$filter', function ($filter) { 
    return function (a) { 
     var b = angular.copy(a); 
     for (var i=0, j=b.length; i<j; i++) { 
     b[i] = $filter('date')(b[i], 'shortDate'); 
     } 
     return b; 
    } 
}]); 

そして、このようにそれを使用します。

<ul> 
    <li ng-repeat="item in dates | toDate | filter:key">{{item}}</li> 
</ul> 

angular.module("app", []) 
 
.controller("bodyCtrl", ["$scope", function($scope) { 
 
    $scope.dates = [ 
 
    new Date("2016/1/1").getTime(), 
 
    new Date("2016/1/2").getTime(), 
 
    new Date("2016/1/3").getTime(), 
 
    new Date("2016/1/4").getTime(), 
 
    new Date("2016/1/5").getTime(), 
 
    ] 
 
}]) 
 
.filter('toDate', ['$filter', function ($filter) { 
 
    return function (a) { 
 
     var b = angular.copy(a); 
 
     for (var i=0, j=b.length; i<j; i++) { 
 
     b[i] = $filter('date')(b[i], 'shortDate'); 
 
     } 
 
     return b; 
 
    } 
 
}]);
<!DOCTYPE html> 
 
<html ng-app="app"> 
 

 
    <head> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.5/angular.min.js"></script> 
 
    <link rel="stylesheet" href="style.css" /> 
 
    <script src="script.js"></script> 
 
    </head> 
 

 
    <body ng-controller="bodyCtrl"> 
 
    <input type="text" ng-model="key"> 
 
    <hr> 
 
    Without toDate Filter 
 
    <ul> 
 
     <li ng-repeat="item in dates | filter:key">{{item | date:"shortDate"}}</li> 
 
    </ul> 
 
    <hr> 
 
    With toDate Filter 
 
    <ul> 
 
     <li ng-repeat="item in dates | toDate | filter:key">{{item}}</li> 
 
    </ul> 
 
    </body> 
 

 
</html>

+0

私はこの{{newDate}} - > "1/17"が必要ですか?構文ですか?それは何をするためのものか? – Autolycus

+0

@Autolycusアップデートをチェックアウトします。 –

+0

日付の有無は同じですか? – Autolycus

関連する問題