【问题标题】:Using Backbone.js View remove() method with jQuery's fadeOut()使用带有 jQ​​uery 的 fadeOut() 的 Backbone.js View remove() 方法
【发布时间】:2013-05-16 01:07:11
【问题描述】:

我相信我的标题几乎解释了我希望实现的目标,我有一个主干视图,其中包含一个通过 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 中删除元素(视图),我认为这不是很好的用户体验。

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

这可能吗?

干杯!

【问题讨论】:

    标签: jquery backbone.js coffeescript


    【解决方案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()
    

    【讨论】:

    • 嗨,埃文,您对目标元素确实是 el 的假设是正确的,但是不幸的是,您的代码建议不起作用:(仍然感谢您的回复。:)
    • 如果我将您的代码行而不是 @remove() 放在成功回调中,那就是正确答案!
    • 淡出不应自动删除视图或清理事件或任何东西。我怀疑您的 @model.destroy 方法可能会进行适当的删除?或者可能触发了另一种方法。我更新了我的答案,只是按照你的建议进行了淡出
    • 是的,我现在非常清楚发生了什么,@model.destroy() 调用将删除底层记录,但是很明显我们必须等待服务器响应,因此需要fadeOut() 成功回调上的 $(@el)。 (显然我们不能同时删除视图和删除模型)。无论如何,感谢您在这方面的启发。 :)
    【解决方案2】:

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

    removeMember: ->
      @model.destroy
        data:
          collective_id: gon.collective.id
        contentType: 'application/json'
        success: =>
          $(@el).fadeOut(100, @remove())
    

    【讨论】:

    • 非常接近!我不知道为什么,但实际上仅此一项就有效: $(@el).fadeOut(2000) 我仔细检查了它,它正在做它的工作,因为记录正在从数据库中删除。
    • 虽然我不明白,也许在主干文档的某个地方它说淡出将导致自动调用 remove(),因为它似乎是这种情况。正确的?希望这里的人能解释一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 2014-09-02
    • 1970-01-01
    相关资源
    最近更新 更多