2013-10-01 12 views
10

Podążam za this tutorial i utworzyłem odpowiednio spersonalizowane filtry niestandardowe. Ten ostatni powoduje jednak zniknięcie pierwszego; podczas korzystania z filtru truncate jest to wyjątek. Jak utworzyć wiele filtrów w module?Tworzenie wielu niestandardowych filtrów w jednym module w Angularjs

angular.module('filters', []).filter('truncate', function() { 
    return function (text, length, end) { 
     if (isNaN(length)) 
      length = 10; 

     if (end === undefined) 
      end = "..."; 

     if (text.length <= length || text.length - end.length <= length) { 
      return text; 
     } 
     else { 
      return String(text).substring(0, length-end.length) + end; 
     } 

    }; 
}); 


angular.module('filters', []).filter('escape', function() { 
    return function(text) { 
     encodeURIComponent(text); 
    }; 
}); 

Odpowiedz

18
angular.module('filters', []).filter("truncate", function() {}) 
          .filter("escape", function() {}); 
+0

dzięki, które sprawia, że sens – bicycle

+0

Jak byś zrobił to samo, ale z oddzielnym plikiem dla każdego filtra? –

+0

Przepraszamy za odpowiedź na moje własne pytanie, myślę, że byłoby to: 'angular.module ('filters', [])' 'angular.module (' filtry ") filter (" truncate ", function() {});' 'angular.module ('filters') .filtr (" escape ", function() {});' –

4

Drugi powinien być uznany za pomocą

angular.module('filters').filter(....) 

składnię.

Składnia, której używasz, tworzy nowy moduł za każdym razem.

+0

Dzięki, że go rozwiązać. Byłoby miło, że wspominali o tym gdzieś. Nigdzie nie mogłem go znaleźć. – bicycle

+0

W rzeczywistości znajduje się on w przewodniku dla programistów http://docs.angularjs.org/guide/module w sekcji "Twórz i odtwarzaj" sekcja – Chandermani

+1

Myślę, że znasz tę stronę tylko wtedy, gdy znasz już odpowiedź. W przeciwnym razie po prostu myślisz wtf Powinno to powiedzieć w http://docs.angularjs.org/guide/module lub w przykładzie, w którym tworzą dwa filtry – bicycle

0
angular.module('filters') 
    .filter({ 
    groupBy: ['$parse', groupByFilter], 
    countBy: [countByFilter] 
    }); 

//function to handle the filter 
function groupByFilter($parse) { 
    return function(input) { 
    ... 
    } 
} 
1

Jednym ze sposobów, aby oddzielić odfiltrowuje do poszczególnych plików byłoby utworzyć moduł filtracyjny, który wymaga filtrów indywidualnie:

// init.js 
angular.module('application', ['application.filters']) 

// filters.js  
angular.module('application.filters', [ 
       'filters.currencyCents', 
       'filters.percentage', 
       ]); 


// percentage.js   
angular.module('filters.percentage', []).filter('percentage', function() { 
    return function(decimal, sigFigs) { 
    ... 
    }; 
}); 
Powiązane problemy