2013-08-14 17 views
97

Szukałem, jak działa filters w Angularjs i zobaczyłem, że musimy wysłać 2 zestawy nawiasów.Dwa zestawy nawiasów po wywołaniu funkcji

$filter('number')(number[, fractionSize]) 

Co to oznacza i jak sobie z tym radzić za pomocą JavaScript?

+4

Osobiście uważam to składnia mylące/niewygodne jak dobrze czytać . Ale możesz użyć prostszej składni, aby uzyskać dostęp do filtrów AngularJS, jak opisano tutaj: http://stackoverflow.com/a/14303362/1418796 –

+0

Wziąłem angularjs jako przykład. Chciałem wiedzieć, jak sobie z tym poradzić, jeśli sam utworzę funkcję. – L105

Odpowiedz

218

Oznacza to, że pierwsza funkcja ($filter) zwraca inną funkcję, a następnie ta zwrócona funkcja jest wywoływana natychmiast. Na przykład

function add(x){ 
    return function(y){ 
    return x + y; 
    }; 
} 

var addTwo = add(2); 

addTwo(4) === 6; // true 
add(3)(4) === 7; // true 
+2

Dzięki, teraz rozumiem. – L105

+1

Nie ma za co! @ L105. – Paulpro

+1

Niesamowita odpowiedź! Jest to tak oczywiste, kiedy już to zrozumiecie, ale nie od razu będzie ono oczywiste pod względem składni. – HartleySan

5

To samo jak to:

var func = $filter('number'); 
func(number[, fractionSize]); 

Funkcja $filter() zwraca wskaźnik do innej funkcji.

+2

jest zastrzeżonym słowem kluczowym. – eyelidlessness

+0

@ideelidlessness: dzięki za złapanie tego. –

13

$filter('number') zwraca funkcję, która akceptuje dwa argumenty, przy czym pierwszy jest wymagany (liczba), a drugi jest opcjonalny (rozmiar ułamka).

Jest możliwe, aby natychmiast wezwać wracającą funkcję:

$filter('number')('123') 

Alternatywnie, można zachować funkcję zwrócony do wykorzystania w przyszłości:

var numberFilter = $filter('number'); 

numberFilter('123') 
+5

Dzięki temu, kto zdecydował się na tę odpowiedź, powód, dla którego tak się dzieje, umyka mi. –

+0

w tym przypadku, gdzie umieścić .catch, aby uzyskać błędy? – stackdave

+0

@stackdave co próbujesz rozwiązać? –

Powiązane problemy