Use evalAsync to avoid digest cycle error