To avoid triggering your loops in every digest loop you can use one time binding ::value.
Thanks to that expression inside ng-options will be evaluated only once and the watcher will be removed after first evaluation which will stop your function being triggered in next digest loop iterations.