feat(view): add onChange implementation to view.

For internal API lets stick with positional as they are faster than named and they don't create GC pressure.