Why in the following example the initial rendered value is {{ person.name }} rather than David? How would you fix this?
{{ person.name }}
David
Live example here>
The problem is that you are updating the view value when the interpolation is not finished yet.
So removing
// load init value from DOM ctrl.$setViewValue(element.html());
or replacing it with
ctrl.$render();
will resolve the issue.