I have found a solution!
After I talked and checked the βtrackβ for my scripts, I see that he actually does more, which says:
1) If you have a collection of objects, with each object having: id, name, description, you can use the 'track by' to select the property to which it connects, and therefore get a new collection of objects from webservice, it does not will display a DOM object belonging to this value.
2) The most important thing, and what I was after: If an object with an existing identifier comes from a server with the changed name fx, will it be displayed in the array collection on the object with this identifier? Yes it will be! Thus, "track by" actually checks the properties of the incoming object and replaces the old object and still leaves it. It is intense.
It is also worth noting that "track by" also works with directives other than ng-repeat , for example, select .
I did a small demo for other people who may be confused about how everything works ... but it seems like it is cool!
<div ng-repeat='country in countryArray track by country.id'> {{country.id}} {{country.name}} <input type="checkbox"></input> </div> <div> <select ng-model='nonExisting' ng-options='country.name for country in countryArray track by country.id'></select> </div> </div>
http://jsfiddle.net/KUf8C/
source share