template sintaxis not last item handlebars first javascript variables

javascript - not - sintaxis handlebars



¿Cómo asignar el valor de la variable como nombre de la variable en un hash? (3)

Puedes hacer lo que te gustaría que sea así:

var setname = ''set_1'', elements = {}; elements[setname] = [''beer'',''water'',''wine'']; alert(elements[''set_1'']); // beer,water,wine

Vea esto en acción en http://jsfiddle.net/x5KRD/ .

Se puede acceder a todos los objetos en JS utilizando la notación de puntos ( obj.method() u obj.property ), o la notación de corchetes ( obj[''method'']() u obj[''property''] ). El uso de la notación de corchetes le permite especificar dinámicamente los nombres de método / propiedad / clave.

Por ejemplo, aunque torpe, la window[''alert''](''hi'') es equivalente a window.alert(''hi'') .

Tenga en cuenta que su código no funcionará como está, de todos modos, porque está utilizando la notación literal del objeto ( {''beer'',''water'',''wine''} ) para contener una matriz (debe estar entre corchetes [''beer'',''water'',''wine''] lugar). Los literales de objeto necesitan tener pares clave-valor.

Necesito definir un hash para publicar algunos datos ajax usando jQuery. El hash se verá algo así como:

var setname = ''set_1''; elements = { set_1: {''beer'',''water'',''wine''} };

El desafío que necesito resolver es ''set-1'' (la clave de los elementos de la matriz) debe nombrarse dinámicamente en función del valor de var setname .

Quiero evitar el uso de eval() por supuesto ... en PHP se puede hacer usando el doble signo de dólar como este: $$setname , pero ¿cuál es la manera de hacerlo en JavaScript?


Tienes que entender que en realidad no existe nada como "notación JSON" en Javascript; estamos hablando de notación JavaScript nativa. Lo que jQuery quiere es un valor Javascript para los datos POST, no necesariamente un objeto Javascript constante.

Por lo tanto, su código preparará sus datos POST de esta manera:

var elements = {}; elements[setName] = { /* something */ }; elements[somethingElse] = { /* something else */ };

y así. Cuando esté listo para hacer el POST, simplemente usaría "elementos":

$.post(url, elements, function() { /* callback code */ });


var setname = ''set_1'', elements = {}; elements[setname] = [''beer'',''water'',''wine''];