Ok. I think it may work if you have an intermediary object (scope.model.activeTopic instead of scope.activeTopic). But using a function is fine. Adding a comment explaining the need for the setActiveTopic would make sense to me.