2011-10-30 24 views
8

यह वास्तव में मुझे भ्रमित करता है, मुझे लगता है कि मैं बेवकूफ हूं लेकिन मैंने खोज की है और जो कुछ भी कर सकता हूं वह किया है। जब भी मैं एक दृश्य घोषित करता हूं और जैस्मीन के साथ बीडीडी परीक्षण चलाता हूं, तो यह हमेशा "अनिर्धारित कार्य नहीं करता" देता है। इस कोड कोरीढ़ की हड्डी दृश्य - परिभाषित नहीं किया गया है

window.LocationView = Backbone.View.extend({ 
    initialize: function() { 
     // create new marker first 
     this.marker = new google.maps.Marker({ 
      title: this.model.get('name'), 
      draggable: true, 
      animation: google.maps.Animation.DROP, 
      position: new google.maps.LatLng(this.model.get('lat'), this.model.get('long')), // give the position here 
     }); 

     // bind events 
     this.model.bind('change', this.render, this); 
    }, 
    render: function() { 
     this.marker.setTitle(this.model.get("name")); 
     this.marker.setPosition(new google.maps.LatLng(this.model.get('lat'), this.model.get('long'))); 
    }, 
}); 

है यह मैं इसे कैसे घोषित है:

TypeError: undefined is not a function 
    at [object Object].make (http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.5.3/backbone-min.js:29:37) 
    at [object Object]._ensureElement (http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.5.3/backbone-min.js:30:270) 
    at [object Object].<anonymous> (http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.5.3/backbone-min.js:28:127) 
    at new <anonymous> (http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.5.3/backbone-min.js:32:136) 
    at [object Object].<anonymous> (http://localhost/gmap_api/public/test/spec/specs.js:62:21) 
    at [object Object].execute (http://localhost/gmap_api/public/test/spec/jasmine/jasmine.js:1001:15) 
    at [object Object].next_ (http://localhost/gmap_api/public/test/spec/jasmine/jasmine.js:1790:31) 
    at [object Object].start (http://localhost/gmap_api/public/test/spec/jasmine/jasmine.js:1743:8) 
    at [object Object].execute (http://localhost/gmap_api/public/test/spec/jasmine/jasmine.js:2070:14) 
    at [object Object].next_ (http://localhost/gmap_api/public/test/spec/jasmine/jasmine.js:1790:31) 
+0

मुझे यकीन नहीं है कि "एक दृश्य घोषित करें और फिर एक नया दृश्य घोषित करें" का अर्थ है। क्या आप एक स्थान दृश्य को तुरंत चालू कर रहे हैं और फिर दूसरा स्थान दृश्य देखें? पहला वाला ठीक है लेकिन दूसरा नहीं है? या 'नया स्थान दृश्य ({मॉडल: यह। स्थान}) 'काम करता है लेकिन' नया स्थान दृश्य(); 'नहीं करता है? –

+0

@muistooshort: खराब अंग्रेजी के लिए खेद है, मैं इसे ठीक करता हूं। इसका मतलब है कि यह मुझे संकेत देता है कि स्थान दृश्य प्रत्येक बार परिभाषित नहीं किया गया है, हालांकि मैंने इसे घोषित किया है ?? – nXqd

उत्तर

18

मुझे एक ही समस्या थी जब मैंने गलत जावास्क्रिप्ट फ़ाइलों को गलत क्रम में शामिल किया था। उन्हें इस प्रकार आयात करें:

jQuery.js 
Underscore.js 
Backbone.js 
YourCode.js 

यदि ऐसा नहीं है तो उस पंक्ति को पोस्ट करें जिस पर यह अपवाद होता है।

+0

यह मेरी समस्या का समाधान नहीं करता है। मैं इस समय जैस्मीन का उपयोग करके अपनी परियोजना को फिर से बना देता हूं। लेकिन यह सबसे अच्छा जवाब जैसा दिखता है। धन्यवाद – nXqd

+1

आपको बैकबोन के विकास संस्करण को शामिल करना चाहिए और वास्तव में कहां बनाना है फ़ंक्शन आपको त्रुटि मिलती है, जब बैकबोन आपके दृश्य के लिए HTML तत्व बनाने का प्रयास करता है। http://documentcloud.github.com/backbone/docs/backbone.html#section-117 ऐसा लगता है कि आपके पास $ उपलब्ध नहीं है आप परीक्षणों को चला रहे हैं – dira

+0

आपकी मदद के लिए धन्यवाद, डीरा :) – nXqd

1

क्या आप वाकई देखें की परिभाषा है कर रहे हैं:

this.view = new LocationView({model: this.location}); 
this.view = new LocationView(); 
// neither of these ones work. 

यह त्रुटि जब मैं चमेली के साथ इस कोड को चलाने है प्रारंभिक कोड से पहले? यदि यह एक अलग फ़ाइल में है, तो क्या आप सुनिश्चित हैं कि दृश्य की परिभाषा पहले निष्पादित की गई है?

+0

जब मैं नई मॉडल की परिभाषा घोषित करता हूं और इसे कॉल करता हूं। यह ठीक काम करता है :( – nXqd

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