骨干模型更改事件仅触发一次

时间:2012-09-11 22:54:34

标签: javascript model-view-controller events backbone.js coffeescript

我有一个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)

每次模型更改时,都会调用模型中的“update”方法。但是,当创建模型时,视图中的“animate”方法仅被调用一次。

我错了什么?

修改

也许我只是测试错了?

 trackers = new App.Collections.Trackers
 trackers.fetch()
 tracker = trackers.get(333)
 tracker.set({progress : 70})

333是创建的跟踪器的ID ...但是上面的代码不起作用.. JSFiddle确实工作正常,这令人困惑

1 个答案:

答案 0 :(得分:0)

尝试等到Collection.fetch()完成后开始玩集合中的模型:

trackers = new App.Collections.Trackers
trackers.fetch({
  success: function(){
    tracker = trackers.get(333);
    tracker.set({progress : 70});  
  }
});