Question

J'utilise PHP-back-end, Backbone.js et Handlebars.js. Mes demandes javascript pour les données et les données JSON est retourné avec succès (json_encode).

Quand je donne ces données JSON au modèle de guidon, il n'affiche pas. J'ai réalisé les crochets à l'avant et à l'arrière de mon objet JSON sont « déplaisait » par Handlebars.js et ne pas être affichée. Jetez un oeil sur le code ci-dessous.

var ArticleListView = Backbone.View.extend(
{
  el: $('#main'),
  render: function()
  {
    var template = Handlebars.compile($("#articles_hb").html());
    $(this.el).html(template([{"articles":[{"title" : "1"}, {"title" : "2"}]}]));
    return this;    
  }
});

Maintenant, si je prends les crochets sur, il fonctionne très bien. Que se passe-t-il? Pourquoi les crochets il en premier lieu? Comment puis-je me débarrasser d'eux?

Était-ce utile?

La solution

Guidons veut un objet pour le contexte car il utilise le contexte comme une simple table de consultation pour les valeurs de modèle. Donc, vous devez passer un objet ({ ... }) à template(), pas un tableau ([ ... ]).

Quelqu'un est de vous donner un tableau à une élément qui contient l'objet de contexte dont vous avez besoin. Soit fixer le PHP qui produit le JSON d'envoyer un objet JSONified (tableau associatif en termes PHP) sans l'emballage de tableau ou de la bande hors du tableau dans le code client avec quelque chose comme ceci:

$(this.el).html(template(context[0]));

Si vous avez ce code littéral:

$(this.el).html(template([{"articles":[{"title" : "1"}, {"title" : "2"}]}]));

dans votre fichier JavaScript alors vous devez ce que génère ce code et de le corriger. Si vous avez des données littérales comme celui intégré dans votre vue Backbone alors vous êtes probablement ne pas utiliser correctement Backbone, les données de votre modèle devrait probablement venir d'un modèle de réseau fédérateur.

Si vous obtenez que JSON à partir d'un modèle de réseau fédérateur alors je suppose que vous appelez toJSON devrait vous donner un objet JavaScript.

Autres conseils

Il est tout à fait raisonnable d'appeler Guidons en boucle par la sortie d'une collection. Aussi un tableau est pas une mauvaise décision de conception pour les données de manipulation dans les vues.

Guidons a une syntaxe spéciale pour traiter les identifiants numériques ou de symboles, comme décrit ici . Donc, la réponse plus correcte est que Guidons peut accéder à des tableaux dans les modèles comme ceci:

{{people.attributes.[0]}} // akin to people.attributes[0]
{{people.attributes.[1]}} // akin to people.attributes[1]

Entrée: mails: [{têtes: {subject: [ "Bonjour Chérie", "... un autre"]}}, ... plus]

<ul>
  {{#each mails}}
    <li>.
        {{headers.subject.[0]}}
    </li>
  {{/each}}
</ul>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top