2013-06-04 11 views
5

Sto memorizzando il seguente attributo dati per selezionare gli elementi per il caricamento delle opzioni.La memorizzazione di JSON in dati attendibili è consigliata rispetto alla presenza di attributi di dati separati?

<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> 

Le mie domande è ciò che è il modo migliore in cui necessità di memorizzare molti dati attributi per un singolo elemento DOM? È meglio avere un singolo attributo di dati con i dati JSON o con attributi di dati separati per ogni valore necessario.

+0

Gli attributi dei singoli dati sono probabilmente più mantenibili, se si memorizza JSON all'interno di un campo dati sarà comunque necessario analizzare il JSON. – itsmejodie

+0

Suppongo che gli attributi siano più leggibili, ma il JSON sarebbe un modo più logico per archiviare molti dati. Gli attributi sono anche più accessibili mentre il JSON deve essere convertito in un oggetto da leggere e ritornare a una stringa se vengono apportate modifiche. Idealmente si avrebbero oggetti JavaScript che contengono i dati e sono collegati a un nodo, evitando del tutto questo problema. – Marty

+1

Se il JSON non è il valore desiderato, non lo userei mai solo per "comprimere" molti attributi. Semplicemente non è ciò che è per. – acdcjunior

risposta

2

Penso che la domanda si riduce a sono statici gli attributi dei dati? Stanno forse andando a cambiare? Se stanno per cambiare o potresti volerli modificare, allora JSON è decisamente meglio. Tuttavia, se sono statici e leggerete questi attributi, ritengo che l'attributo dei dati sia corretto, questo è esattamente l'attributo dei dati. So che sembra macchinoso perché hai un sacco di attributi ma penso che vada bene.

MODIFICA di modifica o modifica, intendo di modificarli dinamicamente nel browser dei client.

Spero che questo aiuti.

1

Ciò dipende interamente dal modo in cui vengono utilizzati.

Se i valori sono stringhe semplici e si accede da JavaScript, è probabile che sia opportuno mantenerli negli attributi data-.

Se i valori sono oggetti JSON complessi, allora può più senso per memorizzare il valore completo JSON in un attributo data-, e definire un supporto che lo leggerà (supponendo per semplicità che jQuery è disponibile):

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; 
} 

Infine, se i dati vengono semplicemente passati in giro (ad esempio, scritti dal server, quindi letti e inviati direttamente da qualche altra parte), è più probabile che l'intero blob venga mantenuto in un unico attributo data-.

+0

Grazie per la risposta. Una correzione è jQuery controlla il valore nell'attributo dati e lo analizza se inizia con {. – Nishanthan

+0

Ug, a destra - Ho dimenticato il comportamento aberrante di '$ .data'. Ug. Sì - a causa di questa parsing magic, l'uso di '$ .data' per accedere agli attributi' data-'non dovrebbe mai essere usato, quindi la necessità della funzione helper. In questo caso, l'attributo o il nome dei dati devono essere modificati (cosa che ho fatto). –

Problemi correlati