1

変更時に関数を起動する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」メソッドは、モデルの作成時に1回だけ呼び出されます。

何が間違っているのですか?

編集

たぶん私はそれを間違ってテストしているだけですか?

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

333は作成されたトラッカーのIDです...しかし、上記は機能しません。JSFiddleは実際に正常に機能し、混乱を招きます。

4

1 に答える 1

0

Collection.fetch()コレクション内のモデルでのプレイを開始するまで待ってみてください。

trackers = new App.Collections.Trackers
trackers.fetch({
  success: function(){
    tracker = trackers.get(333);
    tracker.set({progress : 70});  
  }
});
于 2012-09-12T08:51:07.623 に答える