2013-07-19 77 views
0

我想保存一个模型,我可以保存第一个模型罚款,但是如果我保存一个模型,然后另一个直 - 事后得到以下错误,骨干 - 未捕获TypeError:对象[对象对象]没有方法'调用'

Uncaught TypeError: Object [object Object] has no method 'call'

什么会导致此错误?

我保存的代码如下所示,

GroupModalHeaderView.prototype.save = function(e) { 

    var $this = this; 
    this.collection = new app.GroupCollection(); 

    if(this.$("#group-name").val() !== "") { 
    this.collection.add(this.model,{ 
     merge: true 
    }); 
    } 

    this.model.save({ 
    name: this.$("#group-name").val(), 
    async: false, 
    wait: true 
    }, { 
    success: function() { 

     var GroupList = new app.GroupListView({ 
     model: $this.model, 
     collection: $this.collection 
     }); 

     var modal = new app.GroupModalView({ 
     model: $this.model, 
     collection: $this.collection 
     }); 

     $this.collection.on("change", GroupList.render(), this); 
     $this.collection.on("change", modal.render(), this); 
     //return $this.cancel(); 
    } 
    }); 
}; 

而且我的模型代码看起来像这样,

(function() { 
    var Group, GroupSearchModel, 
    __hasProp = {}.hasOwnProperty, 
    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; 

    Group = (function(_super) { 

    __extends(Group, _super); 

    function Group() { 
     return Group.__super__.constructor.apply(this, arguments); 
    } 

    Group.prototype.urlRoot = config.base + "api/group/groups"; 

    Group.prototype.defaults = { 
     user_id: "", 
     name: "New Group", 
     email: "", 
     url: "", 
     telephone: "", 
     mobile: "", 
     fax: "", 
     people: "" 
    }; 

    Group.prototype.idAttribute = "id"; 

    return Group; 

    })(app.BaseModel); 

    GroupSearchModel = (function(_super) { 

    __extends(GroupSearchModel, _super); 

    function GroupSearchModel() { 
     return GroupSearchModel.__super__.constructor.apply(this, arguments); 
    } 

    return GroupSearchModel; 

    })(app.BaseModel); 

    this.app = window.app || {}; 

    this.app.Group = Group; 

    this.app.GroupSearchModel = GroupSearchModel; 

}).call(this); 

我假设是有事情做与.call(this)在结束我的模型?

+0

基于您的代码,你真的需要阅读这篇文章如何组织骨干视图和模型:http://alexkinnee.com/2013/12/optimal-use-of-backbone-js-model -events-and-mvc-structure/ :) –

回答

1

在你的代码中有一堆拙劣的东西,但我的第一个猜测是这个错误导致了你当前的问题。绑定事件处理程序时,通常需要引用,但不是EXCUTE处理函数。因此,而不是GroupList.render()(带括号)正在执行的功能,你想要GroupList.render(没有括号) 只是引用它而不执行。

$this.collection.on("change", GroupList.render, this); 
$this.collection.on("change", modal.render, this); 
//return $this.cancel(); 
+0

谢谢,谢谢,谢谢。 :d – LowFieldTheory

相关问题