This problem is now addressed by more recent versions of AngularJS with the track by feature allowing repeaters over primitives:
The page will not get repainted after each keystroke, which solves the problem of the lost focus. The official AngularJS doc is quite vague and confusing about this.