2016-08-08 8 views
0

このスコープ用のカスタム検索フィルタを作成する必要があります。私はHTMLで文字列としてステータスを表示し、それは私が望む方法でフィルタされていないので、私は、デフォルトのフィルタ関数を試して、動作しません。テキストボックスにノーマルと入力すると、データが0,1,2であるので何も起こりません。2016/05/16フォーマットの購入時間を検索すると検索もできません。角度カスタム検索フィルタ

$scope.orderHistory = {[ 
    "purchaseTime": 1437536718345, 
    "status": 1, 
]}; 
app.filter('filterSearch', function() { 
    //what to do here?? 
}); 


<input type="text" ng-model="searchReview"> 

<div dir-paginate="order in orderHistory|filterSearch:searchReview"> 
<ul> 
<li><p class="table-data2-h">{{ order.purchaseTime | date : 'yyyy/MM/dd'}} </p></li> 
<li> 
<span ng-if="order.status == 0 ">Stable</span> 
<span ng-if="order.status == 1 ">Normal</span> 
<span ng-if="order.status == 2 ">Serious</span> 
</li> 
</div> 
+0

に役立ちます願っていますか? ' Stable' ..のように、 'object'に' sportorderreply.orderStatus'については何もありません。 'construction 'は' $ scope.orderHistory = {['の代わりに' $ scope.orderHistory = [{''でなければなりません。 – developer033

+0

私の悪い先生、didn; t注意してください、私はコードを編集し、あなたの答えは下手く動作しています。 – Jojo

答えて

2

最初に、私はあなたのcodeでいくつかの間違いを見ましたが、それを下に比較することができます。

私はあなただけでそれに応じて要件をあなたの特性を解析するために、単純なfunctionを作成することをお勧めしたいinitilization、その後することができます(よりカスタムfilterが呼び出されたときに毎回解析するほうが良いでしょう確かにその1) の通常のfilterを使用してください。

作業、それを参照してください:

(function() { 
 
    'use strict'; 
 

 
    angular 
 
    .module('app', []) 
 
    .constant('STATUS', { 
 
     0: 'Stable', 
 
     1: 'Normal', 
 
     2: 'Serious' 
 
    }) 
 
    .controller('MainCtrl', MainCtrl); 
 

 
    MainCtrl.$inject = ['$scope', 'STATUS']; 
 

 
    function MainCtrl($scope, STATUS) { 
 
    $scope.orderHistory = [ 
 
     { 
 
     "purchaseTime": 1437536718345, 
 
     "status": 1 
 
     }, 
 
     { 
 
     "purchaseTime": 1431236718345, 
 
     "status": 0 
 
     }, 
 
     { 
 
     "purchaseTime": 1099536718345, 
 
     "status": 2 
 
     }, 
 
     { 
 
     "purchaseTime": 1439744718345, 
 
     "status": 1 
 
     } 
 
    ]; 
 

 
    function parseProperties() { 
 
     $scope.orderHistory.map(function(order) { 
 
     // You can do it with switch statement 
 
     // switch (order.status) { 
 
     // case 0: 
 
     //  order.status = 'Stable'; 
 
     //  break; 
 
     // case 1: 
 
     //  order.status = 'Normal'; 
 
     //  break; 
 
     // case 2: 
 
     //  order.status = 'Serious'; 
 
     //  break; 
 
     // } 
 

 
     // or using a constant that you can define above 
 
     order.status = STATUS[order.status]; 
 

 
     order.purchaseTime = new Date(order.purchaseTime).toLocaleDateString(); 
 
     return order; 
 
     }); 
 
    } 
 

 
    parseProperties(); 
 
    } 
 
})();
<!DOCTYPE html> 
 
<html ng-app="app"> 
 

 
<head> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script> 
 
</head> 
 

 
<body ng-controller="MainCtrl"> 
 
    <input type="text" placeholder="Search..." ng-model="searchReview"> 
 
    <div ng-repeat="order in orderHistory | filter: searchReview"> 
 
    <ul> 
 
     <li> 
 
     <p class="table-data2-h" ng-bind="order.purchaseTime"></p> 
 
     </li> 
 
     <li ng-bind="order.status"></li> 
 
    </ul> 
 
    </div> 
 
</body> 
 

 
</html>

私はあなたが上記のそのコードでは、いくつかのミスを持って知っている、それは

+0

こんにちは、それはうまく動作します、ありがとうございます。もう1つ質問することができます。私のjson配列では、私は** 'レート'のデータを持っています: '異常' **しかし、私はそのデータを表示していません。 ** Normal **を検索すると、レート異常のデータが表示されます – Jojo

+0

Constantに 'status'を追加するだけです。例:' 3: '異常' – developer033

+0

こんにちは、ありがとうございます:)歓声 – Jojo

関連する問題