2017-07-15 14 views
0

フィルタの値に基づいてページの一部を表示および非表示にしようとしています。データの長さが1の場合、特定のフィールドが表示されるはずですし、そのゼロ場合は、ページの異なる部分は、フィルタの結果を使用して値に基づくビューを表示する

<div ng-show="results.length=0"> 
    <h4 class="redtext" align="center">Sorry, Search found no records </h4> 
</div> 
<div ng-show="results.length!=0" ng-repeat="item in record | dateRange : from : to"> 
    <table width="100%" border="0" cellspacing="5" cellpadding="5"> 
    <tr> 
     <td width="70%"><div align="left"> 
     <p><strong>Bill Period</strong>  </p> 
     </div></td> 
     <td width="82%">{{item.Date |date: 'MMMM yyyy'}}</td> 
    </tr> 
    <tr> 
     <td><p><strong>Reading Date</strong></p></td> 
     <td>{{item.Date |date: 'dd MMMM yyyy'}}</td> 
    </tr> 
    <tr> 
     <td colspan="2">&nbsp;</td> 
    </tr> 
    </table> 

JS

$scope.state_request = function() { 
$http.post("http://localhost/server/statement.php", { 
    'id': $scope.account_number 
}).success(function(data) { 
    console.log(JSON.stringify(data)); 
    $scope.record = data; 
}) 
$scope.from = $filter('date')($scope.sdate, "yyyy-MM-dd" + 'T00:00:00') + 'Z'; 
$scope.to = $filter('date')($scope.edate, "yyyy-MM-dd" + 'T00:00:00') + 'Z'; 
} 
}) 
.filter('dateRange', function() { 
    return function(records, from, to) { 
     // return empty array if input not defined or not array 
     if (!records || !angular.isArray(records)) { 
      return []; 
     } 
     var results = records.filter(function(record) { 
      // run console log tests here...before the return 
      return record.Date >= from && record.Date <= to; 
     }); 
     if (results.length = 0) { 
      console.log('its empty') 
     } else { 
      console.log('results found') 
     } 
     console.log('Number of results:', results.length); 
     return results; 
    } 
}) 

スクリプトが実行されたときに何も表示されませんが表示されるはずです

答えて

0

私ははっきりとあなたを理解している場合、as results(あなたのケースで:ng-repeat="item in record | dateRange : from : to as results"filter後に役立ちます。

angular.module('app',[]).controller('ctrl', ['$scope', function($scope){ 
 
    $scope.record = ['one', 'two', 'three', 'four']; 
 
}]);
<script src="//code.angularjs.org/snapshot/angular.min.js"></script> 
 

 
<div ng-app='app' ng-controller='ctrl'> 
 
    <input type='text' ng-model='search' ng-init='search = "five"'/> 
 
    <p ng-if='results.length == 0'>Sorry, Search found no records</p> 
 
    <ul> 
 
    <li ng-repeat='item in record | filter : search as results'>{{item}}</li> 
 
    </ul> 
 
</div>

また、あなたが条件で、タイプミスをした:<div ng-show="results.length==0"></div>

関連する問題