backbone.js获取成功获取后未触发的更改事件

时间:2011-06-30 13:57:39

标签: backbone.js

我有以下主干观点:

class Observation扩展了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的render方法。该模型是骨干系列。

fetch工作成功,但未触发更改的事件。我正在绝望地尝试手动触发。

谁能看到我做错了什么?

1 个答案:

答案 0 :(得分:5)

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

“改变”事件实际上更复杂。这是一个模型上的事件,只要你调用.set()就会触发它,它总是包含属性,所以你要编写如下内容:

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

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