4 votes

Le modèle de soulignement ne s'affiche pas dans le backbone

Je suis en train d'essayer un exemple simple (voir le code complet ci-dessous) avec les dernières versions de production de backbone.js, underscore.js et jquery. Cependant, je n'arrive pas à afficher quoi que ce soit à l'écran. J'ai essayé d'enregistrer this.$el dans le log de la console et il semble valide, de même que la var html contient le bon HTML analysé à partir du modèle de test. Mais rien ne s'affiche dans la fenêtre du navigateur.

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>testing Backbone.js</title>
  </head>
  <body>

      <script type="text/template" id="test-template">
      <div id="container">
          <%= test %>
      </div>
      </script>

      <script type="text/javascript" src="js/lib/jquery.js"></script>
      <script type="text/javascript" src="js/lib/underscore.js"></script>
      <script type="text/javascript" src="js/lib/backbone.js"></script>
      <script type="text/javascript">
        var testView = Backbone.View.extend({
            el: $("#container"),
            template: _.template($('#test-template').html()),
            render: function() {
                var html = this.template({test: 'hello World!'});
                this.$el.html(html);
                return this;
            }
        });

        $(document).ready(function() {
            var test = new testView();
            test.render();
        });
      </script>
  </body>
</html>

5voto

Lee Avital Points 451

Il n'y a pas d'élément avec id="container" auquel ajouter le modèle. Si vous remplacez

el: $("#container")

avec

el: $('body')

Quelque chose devrait apparaître

1voto

coonooo Points 215

Il n'y a pas de code de rendu. Le contenu du template n'est pas la partie visible du DOM ; essayez ceci :

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <title>testing Backbone.js</title>
  </head>
  <body>
      <div id="output"></div>
      <script type="text/template" id="test-template">
      <div id="container">
          <%= test %>
      </div>
      </script>

      <script type="text/javascript" src="js/lib/jquery.js"></script>
      <script type="text/javascript" src="js/lib/underscore.js"></script>
      <script type="text/javascript" src="js/lib/backbone.js"></script>
      <script type="text/javascript">
        var testView = Backbone.View.extend({
            el: $("#container"),
            template: _.template($('#test-template').html()),
            render: function() {
                var html = this.template({test: 'hello World!'});
                $("#output").html(html);
                return this;
            }
        });

    $(document).ready(function() {
        var test = new testView();
        test.render();
    });
  </script>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X