Как заставить фронтэнд забирать данные после завершения запроса к БД на сервере?
1. yii тут не при чем
2. Вы понимаете что then и when это принципиально разные слова?
https://docs.angularjs.org/api/ng/service/$q#when
В итоге у передал в calback параметр функции update и заработало. CPElement.update({id: id}, data,function(){

                    $scope.calculate()
                })