I think a service may actually be the best way for the modal. Have the modal declared with a directive, then people can put 'ng-click="scopeModalFn()"' or 'ng-submit="scopeModalFn()'. Then in the scope the user can just inject a service and call modalService.openModal('modal-id'). It's really the most angular-ish way to do it, and can avoid throwing in messy custom jQuery bindings.
I'm also working on a bootstrap tabs directive, but having trouble with the scope of the tab right now, and something not being evaluted right. Here it is so far:
There are comments where the problems are, and I'll explain:
I want it to make it so when you select a tab and press update on the tab item, it will call update in the MainCtrl scope. But it calls it in the controller scope instead.
Also, it's not evaluating item-select correctly. It keeps as a string even though I give it 'evaluate' in the scope.