2011-09-08 9 views
31

मैं Cannot call 'start' of undefined जब बुला ...backbone.js इतिहास प्रारंभ करते समय अपरिभाषित 'प्रारंभ' को कॉल नहीं कर सकता।

Backbone.history.start() 

कुछ चेकों बैकबोन चलाते समय ऑब्जेक्ट लेकिन Backbone.history अनिर्धारित दिखाता है।

इसका कारण क्या हो सकता है?

धन्यवाद

+0

यह समस्या मेरे लिए दूर चला गया जब मैं यूआरएल एक '#' चरित्र के बाद प्रवेश किया। – javabrain

उत्तर

51

क्या आपके पास नियंत्रक पर कोई मार्ग है? कम से कम एक मार्ग निर्दिष्ट होने पर बैकबोन केवल इतिहास बनाता है।

अधिक:

TypeError: Cannot call method 'start' of undefined**

Hmm, for some reason Backbone.history is undefined, and so there is no start method on it. It turns out that Backbone.js creates an instance of Backbone.History (upper case ‘H’) called Backbone.history (lower case ‘h’) once a controller has been created that has at least one route specified on it. This makes sense, as history management is only required if there are routes to respond to.

http://tinnedfruit.com/2011/04/26/testing-backbone-apps-with-jasmine-sinon-3.html

+0

मैंने इसे कॉल करने से पहले एक बेस राउटर में window.router सेट किया। रीढ़ की हड्डी के लिए नया हालांकि मैं शायद इस सवाल को पूरी तरह समझ नहीं पा रहा हूं। – fancy

+0

आह, मैंने इसे समझ लिया, लीड के लिए धन्यवाद। – fancy

+1

इसे काम करने के लिए आपने क्या किया? मैं 'Backbone.history.start()' को कॉल करने से पहले कुछ 'window.router' को भी सेट कर रहा हूं, लेकिन अभी भी एक त्रुटि हो रही है। –

1

ऐसा ही एक त्रुटि संदेश ".. कोई विधि 'स्टार्ट' है" पॉप अप होता है अगर आप Backbone.history.start के बजाय Backbone.History.start बारे में (सही लोअरकेस h में साथ है history)।

10

मैंने एक ही त्रुटि को मारा।

यह तब होता है जब आप रूटर का एक उदाहरण नहीं बनाते हैं: आप CoffeeScript उपयोग कर रहे हैं

var routerInstance = new blogRouter(); 
+0

मेरे पास वास्तव में एक उदाहरण है (http://dpaste.com/06NK3KD) लेकिन यह डिफ़ॉल्ट फ़ंक्शन के लिए रास्ता नहीं ढूंढ रहा है। – tutuca

1
(function($) { 

    var Demo = Backbone.Router.extend({ 
     routes:{ 
      '*actions':'defaultRoute' 
     }, 
     defaultRoute:function(action){ 
      alert('xss'); 
     } 
    }); 

    var demo = new Demo; 
    Backbone.history.start(); 
    //My site http://bbs.w3hacker.com 

})(jQuery); 
+3

अपनी पोस्ट की गुणवत्ता में सुधार करने के लिए, कृपया यह कोड कैसे हल करें/क्यों समस्या हल करेगा। –

6

और अपने रूटर एक निर्माता विधि के साथ CoffeeScript वर्ग कीवर्ड का उपयोग परिभाषित किया गया है, दोहरी जांच कि आप निर्माता की परिभाषा में सुपर आह्वान करते हैं। इसने बैकबोन.history के मुद्दे को हल किया जो मेरे लिए शून्य है।

class AppRouter extends Backbone.Router 
    constructor: (options) -> 
    super(options) 
    # other initialization code 
2

मैं अलग कारण के लिए ठीक उसी मुद्दे का सामना करना पड़ा मैं महसूस किया कि "मार्ग" मेरे रूटर में एक विधि घंटे की जोड़ी बिताने के बाद,: समारोह() समस्या पैदा कर रहा है, मैं टिप्पणी इस अनावश्यक अतिरिक्त विधि के बाद, इतिहास .start() अपेक्षित के रूप में काम किया।

+0

धन्यवाद! आपने मेरा दिन बचा लिया! –

6

सुनिश्चित करें कि आप jQuery.jsunderscore.js से पहले और एचटीएमएल सिर में backbone.js शामिल करें।

0

इसके अलावा jQuery के पुराने संस्करणों का उपयोग का कारण बन सकता इस

संबंधित मुद्दे