在多个视图中触发事件

时间:2011-02-24 03:13:15

标签: backbone.js coffeescript

我正在使用Backbone.js组合一个应用程序,它现在有两个视图,一个IndexView和一个QuizPartial。 IndexView呈现页面的大部分(一些图形和诸如此类),并且它包含许多QuizPartials。我的问题是当用户点击其中一个部分中的“删除”链接时,应该删除部分并销毁相应的模型,而IndexView会创建一个按钮来创建新的测验。但是,我无法让IndexView响应该事件。

代码:

class QuizPartial extends Backbone.View
  tagName: "div"
  className: "quiz"
  events:
    "click a.delete": "delete_quiz" # Works fine

  initialize: -> @render()

  delete_quiz: ->
    if confirm "Are you sure you want to delete this test?"
      $(@el).remove()
      @model.destroy()
    false

然后是索引视图:

class IndexView extends Backbone.View
  tagName: "div"
  id: "quizzes_index"
  events:
    "click .quiz a.delete": "render_new_quiz_button" # Never fires

  initialize: -> @render()

  # etc...

我应该做些什么不同的事情吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

实际的UI事件在测验视图中完成。您正确删除元素并销毁模型。现在你有两个选择:

  • 让您的IndexView监听Quiz集合中的“删除”事件。
  • 从测验视图触发新事件以通知正在聆听的人