2015-05-16 6 views
6

Ho la seguente tabella di markup:Posso interrompere il binding angolare senza riuscire in silenzio?

<tr ng-repeat="client in clientsIndex"> 
    <td>{{client.fullName}}</td> 
    <td>{{item.contactPhone}}</td> 
</tr> 

Quando la vista per questo rende, vedo solo una colonna è popolata, ma nulla registrato nella console. C'è un modo che posso dire angolare questa è una sessione di debug, e mi piacerebbe vedere grandi messaggi di errore urlando se faccio un errore di copia e incolla?

+2

no, fallisce silenziosamente in base alla progettazione. Non c'è modo per angolare di sapere che l'oggetto non sarà impostato in seguito per avere un 'debug' che sarebbe utile – charlietfl

+0

@charlietfl Sicuramente nel momento in cui viene valutata l'espressione {{}}, qualunque cosa può produrre un non-non valore vuoto almeno? O l'espressione di associazione è compilata nel modulo e non viene valutata in "runtime"? – ProfK

+0

Non ho dimestichezza con l'angolare ma forse potresti impostare alcuni valori fittizi prima di impostare i valori effettivi per vedere dove stai andando male? – IanAuld

risposta

0

Sicuramente nel momento in cui viene valutata l'espressione {{}}, qualsiasi cosa può produrre un valore non vuoto almeno?

A partire da Angular 1.1.5 è disponibile il supporto per gli operatori ternari nei modelli. Così si può definire qualcosa di simile per ottenere un valore predefinito se undefined:

<tr ng-repeat="client in clientsIndex"> 
    <td>{{client.fullName}}</td> 
    <td>{{item.contactPhone ? item.contactPhone : 'Error: not defined'}}</td> 
</tr> 

La struttura generale è: {{(condition) ? (expression if true) : (expression if false)}}.

+0

Grazie. Ho appena utilizzato con successo l'operatore ternario venerdì per la prima volta, e non mi è mai venuto in mente che potrei usarlo qui. – ProfK

0

Per scopi di debug è possibile selezionare l'elemento utilizzando qualsiasi selettore angular.element ("") e vedere l'ambito di quell'elemento per verificare che la variabile a cui si sta tentando di accedere all'interno dell'elemento sia all'interno dell'ambito disponibile per quell'elemento. Trova l'esempio qui sotto. Ho usato un selettore di id che puoi usare un selettore di bambini.

<tr id="canbeReplacedWithChildSelectors" ng-repeat="client in clientsIndex"> 
<td>{{client.fullName}}</td> 
<td>{{item.contactPhone}}</td> 
</tr> 

angular.element ("#") canbeReplacedWithChildSelectors. Portata() eseguire questo e controllare client.fullName è disponibile nel tuo caso scope.in angular.element ("#") canbeReplacedWithChildSelectors. Portata(). il cliente ti darebbe undefined.

Problemi correlati