2

我相信我的标题几乎解释了我希望实现的目标,我有一个主干视图,其中包含一个通过view.remove()删除自身的事件

更确切地说:

class Project.Views.MemberView extends Backbone.View
  template: JST['members/member_view']

  events:
    'click .destroy-member': 'removeMember'

  initialize: ->
    _.bindAll(this, "render")

  render: ->
    $(@el).html(@template(member: @model))
    this

  removeMember: ->
    @model.destroy
      data:
        collective_id: gon.collective.id
      contentType: 'application/json'
      success: =>
        @remove() #view.remove() called here

这个对view.remove()的调用运行良好并且符合预期,但是它会立即从 DOM 中删除元素(视图),我认为这不是很好的用户体验。

我需要知道的是,如果有办法用Jquery fadeOut()包装链接这个对 view.remove() 的调用。在我看来,这将大大改善用户体验。

这可能吗?

干杯!

4

2 回答 2

1

你为什么不在删除之前调用fadeOut?我不熟悉coffeescript,但在你调用模型销毁之前,只需执行以下操作:

removeMember: ->
    // whatever el you want to remove, just fade it out. from your code maybe its $(@el) ?:
    @model.destroy
      data:
        collective_id: gon.collective.id
      contentType: 'application/json'
      success: =>
        $(@el).fadeOut()
于 2013-05-15T16:38:28.233 回答
1

fadeOut() 有一个成功回调 - 我建议将它用于您的 @remove() 调用:

removeMember: ->
  @model.destroy
    data:
      collective_id: gon.collective.id
    contentType: 'application/json'
    success: =>
      $(@el).fadeOut(100, @remove())
于 2013-05-15T16:48:59.567 回答