2013-08-14 14 views
97

stavo cercando come filters opere in Angularjs e ho visto che abbiamo bisogno di inviare 2 set di parentesi.due serie di parentesi dopo la funzione di chiamata

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

Che cosa significa e come lo gestiamo con JavaScript?

+4

Personalmente trovo questa sintassi confusa/scomodo da leggere pure . Ma puoi usare una sintassi più semplice per accedere ai filtri AngularJS come descritto qui: http://stackoverflow.com/a/14303362/1418796 –

+0

Ho preso angularjs come esempio. Volevo sapere come gestirlo se creo una funzione da solo. – L105

risposta

218

Ciò significa che la prima funzione ($filter) restituisce un'altra funzione e quindi tale funzione restituito è chiamato immediatamente. Per esempio:

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

var addTwo = add(2); 

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

Grazie, ora capisco. – L105

+1

Prego @ L105. – Paulpro

+1

Risposta stupenda! Così ovvio una volta capito, ma non immediatamente ovvio sintassi-saggio. – HartleySan

5

è lo stesso di questo:

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

La funzione $filter() restituisce un puntatore ad un'altra funzione.

+2

è una parola chiave riservata – eyelidlessness

+0

@eyelidlessness: grazie per averlo capito. –

13

$filter('number') restituisce una funzione che accetta due argomenti, il primo richiesto (un numero) e il secondo facoltativo (la dimensione della frazione).

E 'possibile chiamare immediatamente la funzione restituita:

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

In alternativa, si può mantenere la funzione restituita per un utilizzo futuro:

var numberFilter = $filter('number'); 

numberFilter('123') 
+5

Grazie a chi ha deciso di dv questa risposta, la ragione per farlo mi sfugge. –

+0

in questo caso dove mettere .atch per ottenere errori? – stackdave

+0

@stackdave cosa stai cercando di risolvere? –

Problemi correlati