Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Backbone.js View remove()方法与jQuery';s衰减()_Jquery_Backbone.js_Coffeescript - Fatal编程技术网

将Backbone.js View remove()方法与jQuery';s衰减()

将Backbone.js View remove()方法与jQuery';s衰减(),jquery,backbone.js,coffeescript,Jquery,Backbone.js,Coffeescript,我相信我的标题几乎解释了我希望实现的目标,我对一个通过 更准确地说: class Project.Views.MemberView extends Backbone.View template: JST['members/member_view'] events: 'click .destroy-member': 'removeMember' initialize: -> _.bindAll(this, "render") render: ->

我相信我的标题几乎解释了我希望实现的目标,我对一个通过

更准确地说:

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中删除元素(视图),我认为这不是很好的用户体验

我需要知道的是,是否有一种方法可以将此调用包装或链接到view.remove()。在我看来,这将大大改善用户体验

这可能吗


干杯

为什么不在移除之前调用淡出?我不熟悉coffeescript,但在调用模型destroy之前,请执行以下操作:

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()
fadeOut()有一个成功的回调-我建议将其用于@remove()调用:


嗨,Evan,您关于目标元素确实是el的假设是正确的,但是不幸的是,您的代码建议没有起作用:(尽管如此,感谢您的回复。)如果我在成功回调中放入您的代码行而不是@remove(),这就是正确的答案!淡出不应自动删除视图或清除事件或任何内容。我怀疑您的@model.destroy方法可能正在进行适当的删除?或者另一种方法正在被触发。我更新了我的答案,以便按照您的建议进行淡出是的,我现在非常清楚发生了什么,@model.destroy()调用将删除底层记录,但是很明显,我们必须等待服务器响应,因此需要在成功回调中淡出()$(@el)。(显然,我们不能同时删除视图和删除模型)。无论如何,感谢您在这方面的启示。:)非常接近!我不知道为什么,但事实上这一点本身是有效的:$(@el).fadeOut(2000),我仔细检查了它,它正在做它的工作,因为记录正在从数据库中删除。但我不明白,可能在主干文档的某个地方,它说fadeOut将导致自动调用remove(),因为似乎是这样。正确的?希望这里有人能解释一下。
removeMember: ->
  @model.destroy
    data:
      collective_id: gon.collective.id
    contentType: 'application/json'
    success: =>
      $(@el).fadeOut(100, @remove())