Backbone.js model.save返回TypeError?

时间:2011-08-17 10:55:26

标签: javascript django backbone.js

我正在尝试实现在Django中看起来像这样的backbone.js模型:

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()

通过TastyPie:/ api / booking通过RESTful界面提供服务。 根据说明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
                }
});
window.Bookings = Backbone.Collection.extend({
url         :   BOOKING_API,
parse       :   function(data){
                return data.objects;
            }
});

现在尝试在控制台中测试它,如下所示:

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

上面的代码返回一个TypeError。我不明白我做错了什么。

2 个答案:

答案 0 :(得分:2)

您没有定义resource_uri或将您的预订放入收藏中。您看到的TypeError来自this.collection.url。你会在booking.collection.url上看到同样的错误。像下面这样的东西可以解决问题。

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

答案 1 :(得分:1)

因为当您调用save()方法时,模型中没有resource_urithis.collection。因此,url会返回undefined