【问题标题】:backbone.js fetch changed event not firing after a successful fetch成功获取后,backbone.js fetch changed 事件未触发
【发布时间】:2011-06-30 13:57:39
【问题描述】:

我有以下主干视图:

类观察扩展 Backbone.Model

class Observations extends Backbone.Collection
  model: Observation

  constructor: ->
    @url = _observationsUrl

class ObservationsView extends Backbone.View
  el: $('#observations')

  initialize: ->
    _.bindAll @    
    @model.bind 'changed', @render
    @model.view = @
    that = @
    @model.fetch {
      success: ->
        alert('success')
        that.model.trigger 'changed'
    }

    render: =>
      alert('rendering baby')

class ObservationsController extends Backbone.Controller
  initialize: ->
    observations = new Observations()
    observationsView = new ObservationsView(model: observations)   

我将模型的更改事件绑定到 ObservationsView 的渲染方法。该模型是一个骨干集合。

获取成功,但没有触发更改的事件。我绝望地尝试手动触发。

谁能看出我做错了什么?

【问题讨论】:

    标签: backbone.js


    【解决方案1】:

    该事件不称为“已更改”。从服务器刷新模型集合后触发的事件是“刷新”。

    “更改”事件实际上更复杂。这是模型上的一个事件,每当您调用 .set() 时都会触发它,并且它始终包含该属性,因此您可以编写如下内容:

    this.model.bind('change:username', _.bind(this.update_username_display, this))
    

    与往常一样,backbone.js 源代码非常易读。

    【讨论】:

    • 模型集合刷新后触发的事件实际上是'reset',而不是'refresh'。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 2012-04-16
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多