Backbone.js错误 - 未捕获的TypeError:对象[object Object]没有方法'create'

时间:2012-06-27 10:45:38

标签: php backbone.js

带有slim.php的Backbone.js - 当我添加一个显示错误的新模型时“Uncaught TypeError:Object [object Object]没有方法'create'”。 Plz帮我把新模型添加到数据库中。

如果我使用this.model.save()方法,则显示500内部服务器错误。用户create()和save()方法的位置。我不清楚这一点。

感谢。

            // Models

    window.Users = Backbone.Model.extend({
        urlRoot:"./bb-api/users",
        defaults:{
            "name":"",
            "email":"",
            "designation":""
        }
    });

    window.UsersCollection = Backbone.Collection.extend({
        model:Users,
        url:"./bb-api/users"
    });


    // Views

    window.AddUserView = Backbone.View.extend({

        template:_.template($('#new-user-tpl').html()),

        initialize:function(){
            this.model.bind("click", this.render, this);
        },

        render:function(){
            $(this.el).html(this.template());
            return this;
        },

        events:{
            "click .add":"saveUser"
        },

        saveUser:function(){ //alert('saveUser');
            this.model.set({
                name:$("#name").val(),
                email:$("#email").val(),
                designation:$("#designation").val()
            });

            if(this.model.isNew()){
                this.model.create(this.model);
            }
        }
    });


    // Router
    var AppRouter = Backbone.Router.extend({

        routes:{
            "":"welcome",
            "add":"addUser"
        },

        welcome:function(){
            $('#content').html('Welcome to Backbone.js App');
        },          

        addUser:function(){ 
            this.addUserModel = new Users();
            this.addUserView = new AddUserView({model:this.addUserModel});
            $('#content').html(this.addUserView.render().el);
        }


    });

    var app = new AppRouter();
    Backbone.history.start();

1 个答案:

答案 0 :(得分:4)

if(this.model.isNew()){
    this.model.create(this.model);
}

此代码错误,导致create中没有Backbone.Model方法。您必须致电this.model.save()将Backbone模型发送到您的服务器 如果是模型isNew,则客户端的请求将为create类型。如果model不是新的,那么方法是update

您可以(并且应该)在此处阅读有关数据同步方法的更多信息:http://backbonejs.org/#SyncBackbone.model.save委托您的模型'sync方法发送实际的AJAX请求。如果未定义模型的sync,则使用全局Backbone.sync。