Here is a plunker: http://plnkr.co/edit/JLDDsTzSAHaitsZ4dxtL?p=preview
Bind the service to the directive's scope:
app.directive('modal', function (ui) {
return {
restrict: 'E',
replace: true,
scope:{},
templateUrl: 'modal.html',
link: function(scope){
scope.ui = ui;
}
}
});
service:
angular.module('ui', [])
.factory('ui', function ($rootScope) {
var _callback = null;
var service = {
confirm: function(confirmed){
if(confirmed) _callback();
service.show = false;
_callback = null;
},
showConfirm: function (title, text, callback) {
service.show = true;
service.title = title;
service.text = text;
_callback = callback;
}
};
return service;
}
);
Template:
<div ng-if="ui.show" class="modal">
<h2>{{ui.title}}</h2>
<p>{{ui.text}}</p>
<button ng-click="ui.confirm(true)">ok</button>
<button ng-click="ui.confirm(false)">cancel</button>
</div>