【问题标题】:Backbone.js model.save returns TypeError?Backbone.js model.save 返回 TypeError?
【发布时间】:2011-08-17 10:55:26
【问题描述】:

我正在尝试在 Django 中实现如下所示的主干.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 的 RESTful 接口提供服务:/api/booking。 我的骨干模型是按照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。我看不出我做错了什么。

【问题讨论】:

    标签: javascript django backbone.js


    【解决方案1】:

    您没有定义 resource_uri 或将您的预订放入集合中。您看到的 TypeError 来自 this.collection.url。您会在执行 booking.collection.url 时看到同样的错误。像下面这样的东西应该可以解决问题。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-05
        • 2020-10-23
        • 2014-10-26
        • 1970-01-01
        • 2019-11-30
        • 1970-01-01
        相关资源
        最近更新 更多