我正在使用 collection.create 方法添加模型。我已经覆盖了 model.validate 方法并且弹出错误窗口我得到了正确的错误消息。
一切似乎都很好,直到我第四次点击保存按钮。为每个先前的无效模型触发无效事件。我注意到当无效事件触发时集合没有自行清理,所以我添加了行 model.collection.pop() 希望能解决它。
无效事件仍被触发 n 次。N 是我尝试创建新模型的次数,直到我重新加载应用程序。我发现如果传入的模型上有一个集合对象,我应该只显示错误消息。现在一切正常,但这似乎有点笨拙。
我尝试在无效事件方法中添加 model.stopListening() 。虽然没有运气。我认为这与我没有完全清理这些部分或无效模型有关。
createNewAsset: (event) ->
@collection.on "invalid", (model, error) =>
console.log "invalid fired"
unless model.collection is undefined
errView = new MyApp.Views.Error(collection: error)
$("body").append(errView.render().el)
model.collection.pop()
@collection.on "sync", ->
Backbone.history.navigate("assets", true)
@collection.create
name: @$el.find("#new_asset_name").val()
澄清更新:
上面的代码适用于最终用户,但我有一些僵尸模型或集合触发了 n 个事件。N 是用户点击保存按钮的次数。