2013-07-10 7 views
12

I modelli AngularJS non possono utilizzare JSON che contiene il trattino nella chiave.I modelli AngularJS non possono utilizzare JSON che contiene il trattino

ad es.

mio JSON sembra

{ 
    ... 
    link: { 
     xx-test:{ 
      href: '/test/xx' 
     } 
} 

Ora, nel mio modello angularjs se rimando il href non funziona

<a ng-href="/app/edit?item={{item.link.xx-test.href}}"></a> 

non è in grado di risolvere il href valore viene reso come /app/edit? item =

Ha provato

<a ng-href="/app/edit?item={{'item.link.xx-test.href'}}"></a> 
<a ng-href="/app/edit?item={{item.link.xx\-test.href}}"></a> 
<a ng-href="/app/edit?item={{item.['link.xx-test'].href}}"></a> 
+0

non sicuro dove il tuo "json" (che non è json, è un oggetto javascript, json è una rappresentazione testuale di quell'oggetto) proviene da ma non è un oggetto javascript valido se le tue chiavi non sono quotate se contengono caratteri variabili non validi. Se si citano le chiavi correttamente, item.link ["xx-test"]. Href dovrebbe funzionare. – mpm

risposta

22

La chiave oggetto deve essere citato con:

$scope.bar = {'xx-test':'foo'}; 

La notazione del bracketing deve essere utilizzata nell'espressione angolare.

<p>{{bar['xx-test']}}</p> 

Opzionalmente si può sfuggire il trattino \- nell'espressione angolare.

+0

quindi, si tratta di una limitazione dovuta a trattini angolari o che non dovrebbero essere usati nei nomi delle chiavi? se il primo, è a causa della traduzione tra i nomi sillabati nel DOM e la controparte camelcase in Javascript (ad esempio -> miaDirettiva)? – icfantv

+0

È perché i trattini sono interpretati come minus – Liam

Problemi correlati