2013-02-13 7 views
7

habe ich eine Ansicht mit dieser Veranstaltung:„Uncaught Typeerror: Object [object Object] hat keine Methode‚off‘“ Fehlerereignisse zu verwenden, wenn zum Rückgrat bewegt 0.9.10

var View = Backbone.View.extend({ 
    el: $('#test'), 
    events: { 
    "change input": "test" 
    }, 
    test: function(e) { 
    console.log("test"); 
    } 
}); 

var view = new View(); 

Mit Rückgrat 0.9.9 es Arbeit, aber mit Backbone 0.9.10 Ich habe diesen Fehler: Uncaught TypeError: Objekt [Objekt Objekt] hat keine Methode 'aus'. Was muss ich ändern, um mit Ereignissen auf Backbone 0.9.10 zu arbeiten?

Ich bin mit dieser

CDN

http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.4/underscore-min.js http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.10/backbone-min.js

Dank

+0

Wird dieser Fehler ausgelöst, wenn .test() aufgerufen wurde? Es scheint nicht so, als würde test etwas in Bezug auf .off() tun. Gibt es einen anderen Code, der .off() aufruft? – DashK

+0

.test() wird nur aufgerufen, wenn Backbone 0.9.9 verwendet wird. Der Fehler tritt auf, wenn die Seite geladen wird, bevor ich mit der Seite interagiere. – Camilo

+0

Wenn der Fehler vor einer Interaktion mit der Seite auftritt, liegt die Ursache des Problems an anderer Stelle. Können Sie den Code bereitstellen, der den Fehler verursacht? (Wenn Sie Firebug betrachten, sollten Sie in der Lage sein, eine Zeilennummer zu erhalten, die die Ausnahme auslöst.) – DashK

Antwort

12

Ich benutzte jquery 1.5.2 und die Methode off wurde auf jquery 1.7.0 eingeführt. Backbone 0.9.9 erfordert, dass el die Methode unbind enthält, während Backbone 0.9.10 erfordert, dass el die Methode off enthält. Die Methode unbind existiert auf jquery 1.5.2 und das war der Grund, warum mein Code mit Backbone 0.9.9 arbeitete.

+0

Vielen Dank :) –

+0

@Camilo: Vielen Dank. Ich helfe mir sehr. Ich habe mich lange mit diesem Problem herumgeschlagen. –

1

Try this ...

var Test = Backbone.View.extend({ 
    events: { 
    "change input": "test" 
    }, 

    initialize: function() { 
    this.setElement($('#test')); 
    }, 

    test: function(e) { 
    alert("test"); 
    } 
}); 

var test = new Test(); 

Oder wäre dies noch besser sein ...

var Test = Backbone.View.extend({ 
    events: { 
    "change input": "test" 
    }, 

    test: function(e) { 
    alert("test"); 
    } 
}); 

var test = new Test({ 
    el: $('#test') 
}); 
+0

Keiner von ihnen hat funktioniert. Ich debuggte mit Ihrem ersten Beispiel und fand das Problem auf setElement. Der erste Parameter von setElement ist element. Wenn ich debuggte, existiert element.unbind, aber element.off ist undefiniert. Bei der Suche habe ich festgestellt, dass die Methode unbind für off on backbone 0.9.10 geändert wurde. Ich verstehe nicht, warum Element nicht die neue Methode enthält, sondern das Alte enthält. – Camilo

+0

Ihre Beispiele sind korrekt. Das Problem war, dass ich eine alte jquery-Version in meinem Projekt verwendete. Danke für Ihre Hilfe. – Camilo

Verwandte Themen