2016-02-07 27 views
1

MusicPlayer.js角服務有包裹在$rootScope.$apply一個回調函數,更新的特定對象(musicPlayer.currentPlaybackTime),並(通過申請$rootScope)共享給所有其他控制器。

我知道你理想上想要限制任何$rootScope污染,所以我在尋找可能的重構選項,它會將應用方法調用到$rootScope,但允許我的更新對象在多個控制器之間共享。

我的研究表明,我需要登記的其他控制器,需要我currentPlaybackTime對象(即PlayerDashboardCtrl.jsPlaylistCtrl.jsAlbumListCtrl.js),但我想明白了什麼是這樣做的最有效的方式。

謝謝。

var setSong = function(song) { 

    currentBuzzObject = new buzz.sound(song.audioUrl, { 
     formats: ['mp3'], 
     preload: true 
    }); 

    currentBuzzObject.bind('timeupdate', function() { 
     $rootScope.$apply(function() { 
      musicPlayer.currentPlaybackTime = currentBuzzObject.getTime(); 
     }); 
    }); 

    musicPlayer.currentSong = song; 
}; 

回答