2016-03-23 11 views
0

私はバックボーンで新しいです。ここに私の質問です。私は、このリストの現在の演奏曲の曲リストとそのインデックスを収集しています。コードは次のようになります。イベントをバックボーンの基本変数にバインドする方法は?

var songCollection = Backbone.Collection.extend({ 
    initialize: function(){ 
     ... 
     this.index = 0; 
     ... 
    }, 
    ... 
    getNextSong:function(){ 
     ... 
     this.index++; 
     ... 
    } 

}) 

現在再生中の曲の内容を表示するビューがあります。現在の再生中の曲が変更されたときに表示情報を更新したいと考えています。下のコードは表示されません。

var view = Backbone.View.extend({ 
    initialize:function(options){ 
     this.options.on('change:index', this.render, this); 

    } 
)} 

NOR

this.listenTo(...); 

誰かがこれを解決するためのアプローチを言うことができるのでしょうか?

答えて

0

「変更:[属性]」(モデル、値、オプション) - 特定の属性が更新されました - Events-catalog

変更イベントはランダムな特性を変更する、モデルattributesハッシュ内の変更のためにトリガされます私が知る限り、コレクションのコレクションはイベントを発生させません。

モデルの属性にはisPlayingのようなフラグを設定し、listenToはビューからコレクションを変更する方がよいでしょう。

var songModel = Backbone.Model.extend({ 
    defaults: { 
    isPlaying: false 
    } 
}); 
var songCollection = Backbone.Collection.extend({ 
    model: songModel 
}); 

var view = Backbone.View.extend({ 
    initialize: function(options) { 
    this.listenTo(this.collection, 'change:isPlaying', this.render); 
    }, 
    render: function(model, value, options) { 
    if(value){ 
    //---------------^ this is the playing song, render it 
    } 
    } 
}); 
関連する問題