2013-02-13 13 views
7

Bu olay bir görünümü vardır: omurgası: omurgaya taşındığında olayları kullanarak hata "yakalanmamış TypeError nesne [nesne nesne] herhangi bir yöntem 'kapalı' var" 0.9.10

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

var view = new View(); 

o 0.9.9 iş, ancak omurga ile 0.9.10 Bu hatayı aldım: Yakalanmamış TypeError: Nesne [object Object] 'off' yöntemine sahip değil. Omurgası 0.9.10'daki etkinliklerle çalışmak için neye ihtiyacım var?

ben ...

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

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

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

var test = new Test(); 

Ya

, bu daha da iyi olurdu bu CDN en

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

Teşekkür

+0

.test() çağrıldığında bu hata tetikleniyor mu? Testin .off() ile ilgili hiçbir şey yapmadığı görülüyor. .off() çağırıyor başka bir kod var mı? – DashK

+0

.test() sadece bel kemiği 0.9.9 kullanılırken çağrılır. Sayfa ile herhangi bir etkileşim yapmadan önce sayfa yüklenirken hata görünüyor. – Camilo

+0

Hata, sayfa ile herhangi bir etkileşimden önce görüntülenirse, sorunun kaynağı başka bir yerde bulunur. Hatayı atan kodu sağlayabiliyor musunuz? (Firebug'a bakarsanız, istisnayı atan bir satır numarası alabilmeniz gerekir.) – DashK

cevap

12

jquery 1.5.2 kullanıyordum ve yöntem off jquery 1.7.0 üzerinde tanıtıldı. Backbone 0.9.9, Backbone 0.9.10'un el ile yöntemin kapalı olmasını gerektirmesine rağmen, omurga 0.9.9'un el yordamı içermesini gerektirir. Yöntem, jquery 1.5.2'de mevcut değil ve kodumun bel kemiği 0,9.9 ile çalışmasının nedeni buydu.

+0

Çok teşekkür ederim :) –

+0

@Camilo: Çok teşekkür ederim. Bana çok yardımcı oluyorum. Bu konuda uzun zamandır mücadele ediyordum. –

1

bu deneyin

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

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

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

Hiçbiri işe yaramadı. İlk örneğinizi kullanarak hata ayıkladı ve problemi setElement öğesinde buldum. SetElement öğesinin ilk parametresi elementtir. Hata ayıkladığımda, element.unbind var, ancak element.off undefined. Aranıyorken, yöntemin açılmasının omurgada 0.9.10 kapalı olarak değiştirildiğini buldum. Neden elemanın yeni yöntemi içermediğini, ancak eskileri içermediğini anlamıyorum. – Camilo

+0

Örnekleriniz doğru. Sorun projemde eski bir jquery versiyonu kullanmamdı. Yardım ettiğin için teşekkür ederim. – Camilo