2013-06-04 9 views
5

Przechowuję następujący atrybut danych dla wybranych elementów do ładowania opcji.Czy przechowywanie JSON w danych attriibute zalecane jest posiadanie oddzielnych atrybutów danych?

<select name="DependsOn_Field" data-load='automatic' data-source='web.module().fields' data-value='name' data-display='label' data-filter='exclude_single' id='DependantField'></select> 

Moje pytanie brzmi, jaki jest najlepszy sposób przechowywania wielu atrybutów danych dla pojedynczego elementu DOM? Czy lepiej jest mieć atrybut pojedynczych danych z danymi JSON lub mieć oddzielne atrybuty danych dla każdej wymaganej wartości.

+0

Poszczególne atrybuty danych są prawdopodobnie łatwiejsze w utrzymaniu, jeśli przechowujesz JSON wewnątrz pola danych, nadal będziesz musiał przeanalizować JSON. – itsmejodie

+0

Myślę, że atrybuty byłyby bardziej czytelne, ale JSON byłby bardziej logicznym sposobem przechowywania wielu danych. Atrybuty są również bardziej dostępne, podczas gdy JSON musi zostać przekonwertowany na obiekt, który ma zostać odczytany i przywrócony do łańcucha, jeśli zostaną wprowadzone zmiany. Idealnie byłoby mieć obiekty JavaScript, które przechowują dane i są połączone z węzłem, całkowicie unikając tego problemu. – Marty

+1

Jeśli JSON nie jest samą pożądaną wartością, nigdy nie użyłbym jej tylko do "pakowania" wielu atrybutów. Po prostu nie jest tym, dla czego jest. – acdcjunior

Odpowiedz

2

Myślę, że pytanie sprowadza się do tego, czy atrybuty danych są statyczne? Czy kiedykolwiek się zmienią? Jeśli będą się zmieniać lub możesz je edytować, to JSON jest zdecydowanie lepszy. Jeśli jednak są statyczne i zamierzasz odczytywać te atrybuty, to myślę, że atrybut danych jest w porządku, to jest właśnie to, za co odpowiada atrybut danych. Wiem, że wygląda to nieporęcznie, ponieważ masz kilka atrybutów, ale myślę, że to w porządku.

EDYTUJ przez zmianę lub edycję, mam na myśli edycję ich dynamicznie w przeglądarce klientów.

Mam nadzieję, że to pomoże.

1

To całkowicie zależy od sposobu ich użycia.

Jeśli Twoje wartości są proste i masz dostęp do nich z JavaScript, prawdopodobnie ma to sens, aby zachować je w atrybutach data-.

Jeśli wartości są złożone obiekty JSON, to może więcej sensu przechowywać pełną wartość JSON w atrybucie data- i zdefiniować pomocnika, który będzie ją przeczytać (zakładając dla uproszczenia, że ​​jQuery jest dostępna):

function getElemData(elem) { 
    var $elem = $(elem); 
    var elemData = $elem.data("_jsonData"); 
    if (!elemData) { 
     elemData = JSON.parse($elem.attr("data-json-data")); 
     $elem.data("_jsonData", elemData); 
    } 
    return elemData; 
} 

I na koniec, jeśli dane są właśnie przekazywane (np. Napisane przez serwer, następnie odczytywane i wysyłane bezpośrednio w innym miejscu), najprawdopodobniej zachowa się cały obiekt typu blob w jednym atrybucie data-.

+0

Dziękuję za odpowiedź. Jedna poprawka to jQuery sprawdza wartość w atrybucie danych i analizuje ją, jeśli zaczyna się od {. – Nishanthan

+0

Ug, prawda - zapomniałem o nienormalnym zachowaniu '$ .data'. Ug. Tak - z powodu tej magii parsowania użycie '$ .data' w celu uzyskania dostępu do atrybutów' data-'nie powinno być absolutnie nigdy używane, stąd potrzeba funkcji pomocnika. W takim przypadku nazwa atrybutu lub danych powinna zostać zmieniona (co zrobiłem). –

Powiązane problemy