Estoy tratando de desarrollar una sencilla aplicación a través de RSS backbone.js. I ‘m usando este backbone.js tutorial. I ‘m obteniendo el siguiente error, en la línea 2(plantilla), cuando la definición de la plantilla.
Puede alguien también me dicen ¿por qué es tagName: «li» que se define en el tutorial?

uncaught TypeError: No se puede llamar método ‘reemplazar’ undefined
columna vertebral.js

Javascript

window.SourceListView = Backbone.View.extend({
    tagName:"li",
    template: _.template($('#tmpl_sourcelist').html()),

    initialize:function () {
        this.model.bind("change", this.render, this);
        this.model.bind("destroy", this.close, this);
    },

    render:function (eventName) {
        $(this.$el).html(this.template(this.model.toJSON()));
        return this;
    },

    close:function () {
        $(this.el).unbind();
        $(this.el).remove();
    }
});

HTML

 <script type="text/template" id="tmpl_sourcelist">
                        <div id="source">
                        <a href='#Source/<%=id%>'<%=name%></a>
                        </div>
                </script>

gracias

intente ejecutar la plantilla sin los datos y ver lo que puedes conseguir…esta.$el.html(esto.plantilla())
Que los errores en línea2(plantilla: _.plantilla($(‘#tmpl_sourcelist’).html()),). No está seguro de lo que está recomendando.

OriginalEl autor jsp | 2013-02-12

1 Comentario

  1. 45

    Están recibiendo su error aquí:

    template: _.template($('#tmpl_sourcelist').html()),

    Parte de _.template‘s interna implica llamar String#reemplace en el sin compilar texto de la plantilla en la manera de producir el compilado función de la plantilla. Ese error en particular, usualmente significa que efectivamente está diciendo esto:

    _.template(undefined)

    Que puede suceder si no hay #tmpl_sourcelist en el DOM cuando dices $('#tmpl_sourcelist').html().

    Hay un par de soluciones simples:

    1. Ajustar su <script> orden, de manera que su #tmpl_sourcelist viene antes de intentar cargar su punto de vista.
    2. Crear el compilado función de la plantilla en la vista initialize en lugar de en la vista de la «clase» definición:

      window.SourceListView = Backbone.View.extend({
          tagName:"li",
          initialize:function () {
              this.template = _.template($('#tmpl_sourcelist').html());
              //...

    Tan lejos como tagName va, el manual tiene esto que decir:

    el view.el

    […] this.el se crea desde el punto de vista del tagName, className, id y attributes propiedades, si se especifica. Si no, el es un vacío div.

    Así que tener esto en su vista:

    tagName: 'li'

    significa que la columna vertebral se creará automáticamente un nuevo <li> elemento de la vista el.

    gran respuesta! Me ha ayudado en mi situación porque $(«#destino»).html(_.plantilla(plantilla, [postes])); estaba buscando un id = blanco, pero era una clase.
    Gracias. De modo que la misma _.template(undefined) problema en disfrazar a continuación.

    OriginalEl autor mu is too short

Dejar respuesta

Please enter your comment!
Please enter your name here