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

标签 backbone.js

我有以下主干观点:

观察类扩展了 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)   

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

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

有人能看出我做错了什么吗?

最佳答案

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

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

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

一如既往,backbone.js 源代码非常可读。

关于backbone.js 获取更改事件在成功获取后未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6535914/

相关文章:

javascript - 渲染多个 d3 图表而不相互覆盖

javascript - 如何从 Backbone/Coffee 中的另一个 View 函数访问我的 @map 对象?

javascript - Backbone Marionette.js reqres 框架不等待集合被填充

jquery - MarionetteJS "sliding"转换

javascript - Backbone + 需要 Backbone.localStorage

javascript - 为什么 RTCPeerConnectionicegatheringstatechange 不起作用?

javascript - 如何在 Backbone 中克隆模型

jquery - backbone.js 路由器在 PhoneGap iOS 构建中失败

jQuery 和 Underscore 未在 RequireJS 中加载

javascript - 在特定 DOM 元素上启用键盘监听器 (ctrl+Z)