моей MusicPlayer.js
угловой службы имеет функцию обратного вызова, завернутую в $rootScope.$apply
, который обновляет конкретный объект (musicPlayer.currentPlaybackTime
) и является общей для всех других контроллеров (с помощью применения к $rootScope
).
Я понимаю, что вы в идеале хотите ограничить загрязнение $rootScope
, поэтому я рассматриваю возможные варианты рефакторинга, которые отвлекают вызов методов приложения до $rootScope
, но позволяет моему обновленному объекту совместно использоваться несколькими контроллерами.
Мое исследование указывает на то, что я нужно зарегистрировать другие контроллеры (т.е. PlayerDashboardCtrl.js
, PlaylistCtrl.js
и AlbumListCtrl.js
), которые нуждаются в моей currentPlaybackTime
объект, но я хотел бы понять, что это наиболее эффективный способ сделать это.
спасибо.
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;
};