Backbone.Model.destroy抛出“Uncaught Error:A”url“属性或函数必须指定”

时间:2014-01-27 11:53:36

标签: javascript backbone.js

我正在构建Backbone应用程序(使用Marionette),我有一个像这样的deleteUser函数:

//User is a Backbone.Model
UserController.prototype.deleteUser = function(user) {
    //Show jquery mobile loader
    $.mobile.loading( "show" );

    user.destroy({
        success: function(user) {
            console.log("Delete-Success: ", user);
            //Trigger an event that redirects to the List-Page
            App.channel.trigger("user:delete:success", user);
        },
        error: function(user) {
            console.log("Delete-Error: ", user);
            //Trigger an event that shows an error message and does not redirect
            App.channel.trigger("user:delete:error", user);
        }
    }).always(function(){
        $.mobile.loading( "hide" );
    });
};

如果服务器可用且没有错误,此功能正常。它还显示服务器无法访问时的错误消息。错误消息显示在表单顶部,以便用户稍后再试。

但是,当我第一次收到错误消息后再次尝试删除模型时,控制台会抛出错误

  

未捕获错误:必须指定“url”属性或函数。

我的收藏品有一个网址属性:

return Backbone.Collection.extend( {
    url: 'http://path-to-users'
});

我的模型还有一个urlRoot属性

return Backbone.Model.extend( {
    urlRoot: 'http://path-to-users',
    defaults: {
        firstname: "",
        lastname: "",
        age: ""
    }

为什么会抛出错误消息?

编辑:

我从userApp.js调用此函数:

var userApp = function() {
    this.Controller = new UserController();
    ...
    App.channel.on("user:delete", this.controller.deleteUser);
}

App.channel.on由EditUserView的“click #delete”函数触发(Marionette.ItemView):

deleteUser: function(){
    this.trigger("delete:clicked", this.model);
    return false;
}

模型不会添加到集合中。每次我想要显示它时,我只是从服务器上获取集合。 “channel”定义为App.channel = _.extend({},Backbone.Events);

0 个答案:

没有答案