Naprawdę mam nadzieję, że ktoś może mi pomóc z problemem, który miałem kilka razy ostatnio.Oceń ciąg w notacji kropkowej, aby uzyskać odpowiednią wartość z obiektu w widoku.
Załóżmy, że mam dwa obiekty w AngularJS.
$scope.fields = ['info.name', 'info.category', 'rate.health']
$scope.rows = [{
info: { name: "Apple", category: "Fruit"},
rate: { health: 100, ignored: true}
},{
info: { name: "Orange", category: "Fruit"},
rate: { health: 100, ignored: true}
},{
info: { name: "Snickers", category: "Sweet"},
rate: { health: 0, ignored: true}
}]
bym wtedy chciał wyświetlić tabelę w widoku, który pokazuje tylko pola w $scope.fields
. Byłoby to bardzo proste, gdyby stół był płaski i wiem, że mogę go spłaszczyć za pomocą JavaScript, ale musi być sposób, aby to zrobić, przekształcając notację kropki na ścieżkę.
Dodałem JSFiddle wykazać problem mam:
JSFiddle: http://jsfiddle.net/7dyqw4ve/1/
Próbowałem również robić coś jak sugerował poniżej, ale problem jest jej straszna praktyką jest stosowanie funkcje w widoku: Convert JavaScript string in dot notation into an object reference
Jeśli ktoś ma jakieś pomysły, byłbym bardzo wdzięczny.
Sugerowane podejście w połączonym pytaniu wydaje się być prawidłowe - czy nie można go po prostu zawinąć w filtrze? –
Myślałem o tym również, ale (i przepraszam, jeśli jestem niepoprawny), z punktu widzenia wydajności, czy będziesz wysyłać cały zestaw danych do filtra wiele razy, zmniejszając prędkość, z której cały zestaw wierszy byłby biegać? Genuin question – Mark
Dodatkowo powinieneś być bardzo ostrożny podczas korzystania z filtrów na DOM, szczególnie jeśli robi on ekstensywną operację, filtry działają tyle razy, ile potrzeba, aby ustabilizować się podczas jednego cyklu trawienia. Równie dobrze mógłbyś, gdyby kontroler odpowiednio ustawił model widoku w zakresie. – PSL