我有以下主干观点:
观察类扩展了 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/