2011-04-22 12 views
28

Considere esta marcadoCuando se utiliza un Backbone.View "parent.apply no es una función" se devuelve el error

<div id="controls" class="controls"> 
    <a href="#">Home</a> - 
    <a href="#/get">get</a> - 
    <a href="#/new">new</a> 
    <input type="text" val="" id="input"> 
</div> 

Y este pedazo de javascript:

$(document).ready(function() { 
    "use strict"; 

    // this is used on my code as root.App, 
    // but the code was omitted here for clarity purposes 
    var root = this, 
    undefined; 

    var controller = Backbone.Controller.extend({ 

    routes : { 
     // static 
    }, 
    }); 

    var view = new Backbone.View.extend({ 
    el : $('#controls'), 
    events : { 
     'click a' : 'updateOnEnter' 
    }, 

    updateOnEnter : function(el) { 
     alert('sss'); 
     return this; 
    }, 

    initialize : function() { 
     _.bindAll(this, 'render', 'updateOnEnter'); 
    }, 

    render : function() { 
     return this; 
    } 
    }); 

    new view; 
    new controller; 
    Backbone.history.start(); 
)}; 

Cuando view se llama (con new view), Firebug despide este error:

parent.apply is not a function 
error backbone.js (line 1043): child = function(){ return parent.apply(this, arguments); }; 

¿Alguna idea de por qué está sucediendo esto? Gracias.

Respuesta

86

No importa.

El problema es en la línea 16 del código js arriba:

var view = new Backbone.View.extend({ 

que debe ser en cambio:

var view = Backbone.View.extend({ 

No estoy borrar esta pregunta, ya que alguien puede encontrarla útil. Las trampas de no venir de un fondo de CS, supongo.

+0

Lo hice. Es un error tonto pero lo logré, yayyy: D ¡Gracias por publicar esto! – Nischal

+0

Perdí una hora buscando el error ... por favor no lo elimine: D –

+1

¡Cometí el mismo error! Google me llevó directamente a esta publicación;) Gracias. – egis

Cuestiones relacionadas