2015-11-11 15 views
6

Sto usando AngularJS, ng-table e coffeescript insieme e vorrei creare un filtro di template multipli all'interno di coffeescript e passarlo nel mio template angularjs.ng-table multiple template filters using coffeescript

Ho un nome & cognome combinato colonna che vorrei due filtri per 'nome' e 'cognome'.

Finora ho funzionato così;

 <td data-title="'Customer'" sortable="'fullname'" 
     filter="{'name_cont': 'text', 'surname_cont':'text'}" > 

Ma vorrei definire questo filtro nel mio controller AngularJS in questo modo

$scope.nameFilterDef = { 
    name: { 
     id: "text", 
     placeholder: "Name" 
    }, 
    surname: { 
     id: "text", 
     placeholder: "Surname" 
    } 
    } 

e ripulire il mio modello utilizzando quel filtro in questo modo;

 <td data-title="'Customer'" sortable="'fullname'" 
     filter="nameFilterDef" > 

Quando chiamo il filtro in questo modo anche se non compaiono caselle filtro.

Aggiornamento

Se metto {{}} nameFilterDef sulla pagina posso vedere il mio filtro hash sempre passata in.

+0

A prima vista sembra che l'attributo ** filter ** non sia analizzato come espressione angolare. Hai provato come 'filter =" {{nameFilterDef}} "'? – mz3

+0

Sì, l'ho provato, ho ricevuto l'errore; Errore: [$ parse: sintassi] Errore di sintassi: il token 'nameFilterDef' è inaspettato, in attesa di [:] nella colonna 3 dell'espressione [{{NameFilterDef}}] a partire da [nomeFilterDef}}]. – map7

+0

È possibile testare il codice con ng-ripetendo 'nameFilterDef' nel modello. Se risulta vuoto, significa che il template '$ scope' non è come ci si aspetta che sia. Potresti creare un plunker o jsFiddle? –

risposta

4

Se questo Tag HTML funziona per voi ...

<td data-title="'Customer'" sortable="'fullname'" 
    filter="{'name_cont': 'text', 'surname_cont':'text'}" > 

Allora questo codice dovrebbe funzionare così:

//use this 
$scope.nameFilterDef = { 
    'name_cont': 'text', 
    'surname_cont':'text' 
    } 
//instead of this: 
$scope.nameFilterDef = { 
name: { 
    id: "text", 
    placeholder: "Name" 
}, 
surname: { 
    id: "text", 
    placeholder: "Surname" 
} 
} 

-

<td data-title="'Customer'" sortable="'fullname'" 
filter="nameFilterDef" > 

Ecco un esempio di lavoro in codepen: Passing filter from the controller as an object

Anche se fornire il codice a lavorare in plunker, codepen o jsFiddle, sarebbe super disponibile.

Spero che questo ti aiuti.

+0

Ho provato quello che mi hai suggerito e non ha funzionato. Deve essere qualcosa di profondo nel mio setup, penso. Forse la pipeline delle risorse dei binari sta intralciando, o coffeescript, o la versione di AngularJS che sto usando – map7

+0

. Ho capito che sto utilizzando una versione di ng-table che non consente questa funzionalità. Quindi sono nel mezzo di aggiornarlo. – map7

+0

Ora ho superato alcuni bug e aggiornato a 0.5.5 di ng-table e la tua risposta funziona bene, grazie. – map7