我有一个Backbone模型,该模型会在更改时触发功能。我想将该功能链接到视图。
模型:
class App.Models.Tracker extends Backbone.Model
urlRoot : '/api/trackers'
initialize: ->
@on('change', @update, this)
update: ->
console.log('changed in model')
@trigger('update', this);
视图:
class App.Views.Tracker extends Backbone.View
template: JST['trackers/tracker']
initialize: () ->
@model.on("update", @animate, this);
render: ->
$(@el).html(@template(tracker: @model))
this
animate: ->
console.log('changed in view')
progress = @model.get('progress')
console.log(progress)
发生的事情是,每次模型更改时,都会调用模型中的“更新”方法。但是,创建模型时,视图中的“动画”方法仅被调用一次。
我怎么了?
编辑
也许我只是在测试错误?
trackers = new App.Collections.Trackers
trackers.fetch()
tracker = trackers.get(333)
tracker.set({progress : 70})
333是创建的跟踪器的ID。。。但是上面的方法不起作用.. JSFiddle确实可以正常工作,这令人困惑
最佳答案
尝试等待Collection.fetch()
完成以开始使用Collection中的模型:
trackers = new App.Collections.Trackers
trackers.fetch({
success: function(){
tracker = trackers.get(333);
tracker.set({progress : 70});
}
});