2015-10-30 19 views
17

C'è un modo per passare alla direttiva angolare ng-clic sul valore dell'ingresso associato?Passa valore casella di spunta a ng-clic angolare

In altre parole, ciò che dovrebbe sostituire this.value nella seguente:

<input type="checkbox" id="cb1" ng-click="checkAll(this.value)" /> 

PS. Non voglio una soluzione alternativa per alternare i valori, mi chiedo solo se è possibile per passare un valore di un input come argomento a una funzione angolare.

+0

Per favore, puoi aggiungere un po 'di più il codice a quello che si desidera in checkAll – Mitul

+0

aggiungere un modello su immettere e passare nel metodo – ngLover

+0

Possibile duplicato di [Casella di controllo angolare e ng-clic] (http://stackoverflow.com/questions/20290738/angular-checkbox-and-ng-click) – Kulbhushan

risposta

26

Si possono fare le seguenti cose:

  • Usa ng-model se si desidera associare un componente html portata angolare
  • Change ng-click a ng-change
  • Se si deve associare un certo valore controllando e deselezionando la casella di controllo utilizzare ng-true-value="someValue" e ng-false-value="someValue"

L'ordine di esecuzione di ng-click e ng-model è ambiguo poiché non definiscono priorità chiare. Invece dovresti usare ng-change o $watch su $scope per assicurarti di ottenere i valori corretti della variabile del modello.

Per gentile concessione di musically_ut

Working Demo

<input type="checkbox" id="cb1" ng-model="check" ng-change="checkAll(check)" ng-true-value="YES" ng-false-value="NO"/> Citizen 
1

Assegnazione di un ng modello ad esso restituirà valore booleano a seconda del cambiamento ad esso:

<input type="checkbox" id="cb1" ng-model="checkValue" ng-change="checkAll(checkValue)" /> 

meglio usare ng-cambiamento, piuttosto che ng clic

+0

Non ha molto senso passare il checkValue come argomento, lo rende comunque disponibile nel modello ... – Serge

+0

@Serge Sì, c'è, ti permette di controllare il flusso di dati, e se qualcun altro deve leggere il codice sarà molto più facile capire dove lo fa i dati provenivano da – ThibaudL

1

Bind la casella di controllo per un valore e passarlo a ng-click.

<input type="checkbox" ng-model="value" id="cb1" ng-click="checkAll(value)" /> 
1

Oggi ho voluto fare la stessa cosa e vedo nessuno ha risposto alla domanda effettiva. Questo è contro la filosofia angolare, ma si può sostituire "this.value" con "$ event.target.checked":

<input type="checkbox" id="cb1" ng-click="checkAll($event.target.checked)" /> 
Problemi correlati