Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

backbone view - is not defined

This really confuses me, I think I'm stupid but I've searched and have done whatever I could. Whenever I declare a view and run BDD test with jasmine, it always returns "undefined is not a function". This is code

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')));
    },
});

This is how I declared it :

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

This is the error when I run this code with jasmine:

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)
like image 459
Dzung Nguyen Avatar asked Oct 30 '11 05:10

Dzung Nguyen


2 Answers

I had a similar problem when I included my javascript files in the wrong order. Import them like so:

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

If that's not the case then post the line at which this exception occurs.

like image 63
NewlessClubie Avatar answered Sep 21 '22 16:09

NewlessClubie


Are you sure the View's definition is before the initialization code? If it's in a separate file, are you sure the View's definition is executed first?

like image 20
moteutsch Avatar answered Sep 21 '22 16:09

moteutsch