I've written a solution for work which I am trying to open source which syncs url parameters with scope variables. What you are asking for is easy to do and is very useful when bookmarking or sharing URLs.
All you need to do is setup a $watch on the variable and use the $location.search() to set the scope variable as a url parameter. Secondly, on initial page load you will need to use $location.search() to grab the url param and set it to the scope variable. This shouldn't be hard to get working in a controller, or try writing a service to make it generic.
In order to keep the url looking nice, I used a simple dictionary to map scope variable names to url parameter names.
To get you started:
$scope.$watch('selected', function(newVal, oldVal) {
if(newVal != oldVal) {
$location.search('selected', newVal);
}
});