использовать $watch на $rootScope
у вас там событие запускается, а не состояние объекта меняется. Хватит везде и всюду пихать ватчи
notify через promise
Он не для этого. Он для того что бы уведомить что скоро будет resolve.
события $emit, $broadcast
именно так. Можно сделать свой изолированный скоуп что бы гонять события только между двумя компонентами, не затрагивая остальную систему.