Dostaję jakieś dane w formacie JSON, który zawiera spacje w niektóre klawisze:angularjs ngRepeat orderby gdy klucz obiekcie obowiązuje
[
{
"PlainKey": "SomeValue",
"Spaced Key": "SomeValue"
},
{
"PlainKey": "SomeValue2",
"Spaced Key": "SomeValue2"
}
]
Dzieje się tak w pewnym momencie:
$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);
});
a następnie ng-repeat
jest używany, aby go wyświetlić, ze zamawiającego:
<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>
to nie zadziała (dostaję e xception) (The PlainKey
działa, ponieważ nie ma spacji).
Próbowałem też wprowadzenie wartości w '
:
<select ng-model="corder">
<option value="'PlainKey'">Plain Key</option>
<option value="'Spaced Key'">Spaced Key</option>
</select>
Wydaje się to zmienić kolejność, ale nie poprawnie.
Czego mi brakuje?
Dzięki!
Enclosing 'Spaced Key' z apostrofami powoduje, że 'orderBy' szuka własności obiektu za pomocą klawisza' 'Spaced Key'', z cytatami zawartymi w elemencie al nazwa nieruchomości. W związku z tym spodziewa się, że coś takiego jak '$ scope.credits [0] [" 'Spaced Key ""] będzie dostępne. Ponieważ nie jest to dostępne, dlatego widzisz niespójne zachowanie. – miqid
@miqid Okay, dzięki. Jak więc zamówić w tym scenariuszu "Spaced Key"? – Ben
Zamiast tego można podać 'orderBy' z funkcją sortowania predykatów (w przeciwieństwie do nazwy właściwości, według której sortowane będą). Oto [Plunker] (http://plnkr.co/edit/Mwe2xu26c1KHeT4KhTDg?p=preview), aby pokazać, co mam na myśli. – miqid