从另一个模板上提升元素上的click事件

时间:2014-10-25 14:48:27

标签: javascript jquery ruby-on-rails backbone.js

我提出了保存和显示模型的观点。它有这样的事件,

events: -> 
  "click li": "addEntry" 
  "click .remove": "destroyEntry" 

addEntry: (e) -> 
  movie_title = $(e.target).text()
  @collection.create title: movie_title

appendEntry: (entry) ->
  view = new Movieseat.Views.Entry(model: entry)
  $('#entries').append(view.render().el)

destroyEntry: (e) -> 
  thisid = @$(e.currentTarget).closest('div').data('id')
  @collection.get(thisid).destroy()

现在,如果我在模板中放置一个li元素并单击它,addEntry事件将被触发并将模型保存到我的Rails数据库中。我的destroyEntry事件也可以删除模型。当模型添加到集合时会触发appendEntry函数。

但是我使用不同的视图来显示列表中的电影集合。现在我想将click li事件连接到另一个模板上的li。这可能吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:1)

在其他视图中,您可以使用相同的数据源。在这种情况下,它是电影的集合。由于它是主干,并且视图实际上只是数据模型的表示,因此使用数据来呈现或触发视图中的更改。

在另一个视图中,观察正在操作的集合上的更改。当您真正关心的是数据被更改时,无需委托事件。

OtherView = Backbone.View.extend
  initialize: (params) ->
    # this could also be the model, I'm not sure how you have this configured
    @listenTo params.movieseats, "change", @updateMovies

  updateMovies: ->
    # manage the view here
相关问题