开发者

Backbone.js model.save returns TypeError?

开发者 https://www.devze.com 2023-03-28 21:29 出处:网络
I\'m trying to implement backbone.js model which looks like this in Django: class Booking(models.Model):

I'm trying to implement backbone.js model which looks like this in Django:

class Booking(models.Model):
    date        = models.DateField('date booked')
    time        = models.TimeField('time booked')
    duration    = models.PositiveSmallIntegerField('duration booked') #x * 15
    user        = models.ForeignKey(User, related_name='bookings')
    room        = models.ForeignKey(Room, related_name='bookings')
    description = models.TextField()

It's served through a RESTful interface via TastyPie: /api/booking. My backbone model is set up like this as per instructions here:

window.Booking = Backbone.Model.extend({
url     :   function(){
                return this.get('resource_uri') || this.collection.url;
            },
urlRoot :   "/api/booking",
defaults:   {
                user    :   "/api/user/5" //defaults to nobodys
                }
开发者_JAVA技巧});
window.Bookings = Backbone.Collection.extend({
url         :   BOOKING_API,
parse       :   function(data){
                return data.objects;
            }
});

Now trying to test it out in console like this:

var booking = new Booking({date : "2011-08-17", time: "12:45", duration: 30, room: "/api/room/1", description: "quickbook"});
booking.save();

The above code returns a TypeError. I don't see what I'm doing wrong.


You are not defining a resource_uri or putting your booking in a collection. The TypeError you are seeing is from this.collection.url. You would see the same error doing booking.collection.url. Something like the following should do the trick.

var bookings = new Bookings;
bookings.add(booking);
booking.save();


Because when you call save() method there is no resource_uri and no this.collection in model. So your url returns undefined

0

精彩评论

暂无评论...
验证码 换一张
取 消