2016-10-09 1 views
1

Bitte helfen Sie das Skript zu beheben.angularjs: Warum funktioniert der Filter nicht?

html:

  <li ng-repeat="date in dateArr | dateFormatter}"> 
       <span class="date">{{date}}</span> 
      </li> 

js:

angular.module('App', []) 
    .controller('lsController', function ($scope) { 
     $scope.dateArr = [ 
      '10.10.2016', 
      '11.10.2016', 
      '12.10.2016', 
      '13.10.2016', 
      '14.10.2016', 
      '15.10.2016' 
     ]; 

     /*$scope.dateFormatter = function(date) { 
      return date.slice(0, 6);    
     }*/  
    }) 
    .filter('dateFormatter', function (date) { 
     return date.slice(0, 6); 
    });  

I verwenden Winkel 1.4.8

JSFIDDLE

I verwenden Filter benötigen, die die Datestring schneiden

Antwort

2

Ihr Filter ist nicht richtig aufgebaut.

Ein Filter soll eine Funktion zurück, die die Argumente für die Filterung enthält und gibt das Ergebnis

.filter('dateFormatter', function() { 
     return function(dateString){ 
     return dateString.slice(0, 6); 
     } 
}); 

Dann Sie diesen Satz haben im ng-repeat zu filtern, aber es gibt Putting es müsste zurückkehren ein gefiltertes Array, keine Stringeingabe und -manipulation. So muss es platziert werden, wo Sie in einem String übergeben

<li ng-repeat="date in dateArr"> 
     <span class="date">{{date | dateFormatter}}</span> 
</li> 

DEMO

0

Ihre Filter ist falsch. Prüfen de Filter documentation für mehr Details

.filter('dateFormatter', function() { 
    return function(date){ 
     return date.slice(0, 6) 
    } 
}); 

Auch die Art und Weise Sie Ihren Filter verwenden, ist falsch. Nehmen Sie es aus ng-repeat

<span class="date">{{date | dateFormatter }}</span> 

FIDDLE

Verwandte Themen