Angular Factories

GOALS

- primary objective: move all of the view independent logic into the factory so that the controllers have only the functions and data required for managing the $scope that each controller manages
- refactor the player controller so that it uses a player factory
- skip the view stuff as much as possible 
- skip stats factory as much as possible
- set up an album factory that uses $http

MAIN PROBLEMS: 
how is the main ctrl communicating with album ctrl?  via rootScope. that's how 
now we want to make it so that both of these scopes are talking to a factory?

roadmap

1. pause whats playing now

2. switch current song

3. switch song list 

4. load

5. play (resume)

Pause is just a proxy for the pause method on the audio object

 

Load is also a proxy method 

because it wraps the load method on the audio object

 

 

1. resume is also a proxy method because it wraps the play method on the audio object

2. perhaps worth noting that we could set an even on 'play'

3. so resume and pause just toggle isPlaying

 

moveTo needs  a reference to the object we're returning so we need to name that object and return it instead of returning an anonymous object 

take next and previous from controllers 

get Progress just returns progress 

but we still have to modify progress

to do that we need to copy event listeners from controllers

 

TO FIX PROGRESS

1. grab timeupdate and ended from our controllers

2. modify them: remove scope 

remove 100, inject rootScope, fac.next()

 

NOW MODIFY CONTROLLER

 

convert toggle, forward,  back, getCurrentSong, getProgressand isPlaying to use PlayerFactory and everything else can be removed 

 

 

NOW ALBUM CONTROLLER

 

1. inject PlayerFactory into controller

2. rewrite $scope.start ---> we need to bind

 

 

What Album CTRL should Look like

 

CHANGE HTML 

 

 

 

 

 modify html

1. getProgress

2. start(song, album)

 

INDEX HTML

1. isPlaying 

2. getCurrentSong

 

 

 

IT WORKS!!!

ONE LAST THING: lets create an albumFactory so we can get $http out of our albums controller

remember to add this factory to index.html

 

 

 

 

IT WORKS!!!

album controller:

 

 

 

 

deck

By ayana28

deck

  • 1,527