2010-11-11 4 views
0

J'utilise le code ci-dessous pour insérer du contenu dans une page. J'ai besoin d'insérer des variables dans le texte pour générer des valeurs dynamiques et je ne sais pas comment faire cela. Quelqu'un peut-il me dire ce que je devrais changer?Comment insérer des variables dans du texte lors du stockage de contenu dans un objet?

Voici un maigri exemple de la façon dont je stocker les données dans mes JS:

var fruit = { 
    'apples': { 
     'goldenDelicious' : { 
      color: 'yellow', 
      sale: 'A sale of $XXXXX (need to insert a number in here). Be sure to buy some before they are all gone!', 
      link: { 
       linkText: ('This company sells this for $XXXXX (eed to insert a price here). Click here to visit their site.'), 
       url: 'I NEED TO INSERT THE URL HERE' 
      } 
     } 
    } 
} 

Voici un exemple de la façon dont je l'appeler: (il est plus dynamique que cela, mais vous obtenez le idea)

var fruitType = 'apples'; 
var fruitVariety = 'goldenDelicious'; 

fruit[fruitType][fruitVariety], function() { 
    // do something 
}); 

Donc ce que je voudrais, c'est pouvoir insérer des valeurs comme un prix, une vente et une URL dans l'objet.

+0

Vous devriez conserver vos données telles qu'elles sont, et faire la conversion lors du rendu (je suppose en HTML). C'est exactement ce que fait un moteur de template javascript. – Mic

Répondre

1

Il existe plusieurs façons de procéder. Si vous allez faire beaucoup de ce type de remplacement, vous voudrez probablement regarder un moteur de template. J'utilise Trimpath, et je suis heureux avec cela.

Si vous ne voulez pas encore avoir cette fantaisie, placez vos propres jetons dans la ficelle et remplacez-les.

var fruit = { 
    'apples': { 
     'goldenDelicious' : { 
      color: 'yellow', 
      sale: 'A sale of PLACEHOLDER_1. Be sure to buy some before they are all gone!', 
      link: { 
       linkText: ('This company sells this for PLACEHOLDER_2. Click here to visit their site.'), 
       url: 'I NEED TO INSERT THE URL HERE' 
      } 
     } 
    } 
} 

fruit.apples.goldenDelicious.sale = fruit.apples.goldenDelicious.sale.replace("PLACEHOLDER_1", "the real value"); 
+0

Merci pour l'aide! Il ne semble pas vouloir travailler avec l'utilisation de la notation par points - cela fonctionnera simplement avec l'utilisation des parenthèses. Des idées pourquoi? Ai-je besoin d'aller définir goldenDelicious et de vendre? J'ai essayé de les mettre entre guillemets mais cela n'a pas aidé non plus. – Cofey

Questions connexes