che sto ricevendo alcuni dati in formato JSON, che ha spazi nel alcune delle chiavi:angularjs ngRepeat orderBy quando chiave struttura dispone di spazi
[
{
"PlainKey": "SomeValue",
"Spaced Key": "SomeValue"
},
{
"PlainKey": "SomeValue2",
"Spaced Key": "SomeValue2"
}
]
Questo accade ad un certo punto:
$http.get('https://dl.dropboxusercontent.com/u/80497/htmlTesting/properties/credits.properties' + '?callback=JSON_CALLBACK').then(function (data) {
$scope.credits = data.data;
}, function (error) {
$scope.errorOccured = true;
console.log("Error:");
console.log(error);
});
e poi ng-repeat
è usato per visualizzarlo, con l'ordinazione:
<select ng-model="corder">
<option value="PlainKey">Plain Key</option>
<option value="Spaced Key">Spaced Key</option>
</select>
<li ng-repeat="credit in credits | orderBy:corder" >
.....
</li>
Questo non funziona (ho una e xception) (Il PlainKey
funziona perché non ci sono spazi).
Ho anche provato a mettere i valori in '
:
<select ng-model="corder">
<option value="'PlainKey'">Plain Key</option>
<option value="'Spaced Key'">Spaced Key</option>
</select>
Questo sembra cambiare l'ordine, ma non in modo corretto.
Cosa mi manca?
Grazie!
Enclosing 'Spaced Key' con apici causa 'orderBy' per cercare una proprietà dell'oggetto con la chiave' 'Spaced Key'', con le virgolette incluse nell'attuatore al nome della proprietà. Quindi, si aspetta qualcosa come '$ scope.credits [0] [" 'Spaced Key' "]' per essere accessibile. Dal momento che questo non è disponibile, è per questo che si vede il comportamento incoerente. – miqid
@miqid Va bene, grazie. Quindi, come faresti per "Spaced Key" in questo scenario? – Ben
Si potrebbe invece fornire 'orderBy' con una funzione di ordinamento dei predicati (al contrario del nome di una proprietà da ordinare per). Ecco un [Plunker] (http://plnkr.co/edit/Mwe2xu26c1KHeT4KhTDg?p=preview) per dimostrare cosa intendo. – miqid