You need to tell your controller that the value of the tab has changed and then update it with the new value from the service. The second controller (ContentSwitcher) can not know, that the value changed and you simply assigned the string value of getTab once to this.tab.

One way to archive this automatically is changing the type of the variable inside your serivce from string to an object (e.g. tab = {name:'Dashboard'}) and then call $scope.$apply after you made changes to it.

In your first controller you still assign this.tab = service.getTab() (which will be an object) and in your view {{tab.name}}.

sharing state between different controllers in angular
Looking at fiber optic image conduits, I found that they have a packing fraction (the ratio of the fiber core's area to the total area) of 100% (source here). 

In other words, they consist only of fiber core, no cladding.

But without cladding, wouldn't the light travel between the individual fibers, messing up the output image?

Or is the cladding so extremely thin that this is simply a result of rounding up to 100%?
