<!DOCTYPE html>
<html data-ng-app="dcpApp">
<head>
<link data-require="bootstrap-css@3.x" data-semver="3.1.1" rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" />
<script data-require="angular.js@*" data-semver="1.3.0-beta.5" src="https://code.angularjs.org/1.3.0-beta.5/angular.js"></script>
<script data-require="ui-bootstrap@*" data-semver="0.10.0" src="http://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.10.0.js"></script>
<script data-require="jquery@*" data-semver="2.0.3" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<link rel="stylesheet" href="style.css" />
<script type="text/javascript" src="main.js"></script>
<script type="text/javascript" src="dialogService.js"></script>
<script type="text/javascript" src="trustedHtmlFilter.js"></script>
</head>
<body >
<h4>Look at console for __doPostBack function result</h4>
<button id="button1" onclick="__doPostBack('button1', '')"
data-postback-confirm='Data will be saved to database. Do you want to proceed?'
data-postback-confirm-title='Confirm Action' >PostBack button</button>
<script type="text/javascript">
function __doPostBack(eventTarget, eventArgument) {
console.log('__doPostBack called with arguments: ', eventTarget, eventArgument);
}
</script>
<script type="text/javascript" src="doPostBackOverride.js"></script>
</body>
</html>
(function(){
angular.module('dcpApp', ['ui.bootstrap']);
})();
/* Styles go here */
Extending ASP.NET __doPostBack function with angular UI confirm modal dialog
(function() {
angular.module('dcpApp').controller('HomeController', ['$scope', 'dialogService',
function($scope, dialogService) {
}
]);
})();
(function() {
angular.module('dcpApp').factory('dialogService', ['$modal',
function($modal) {
function showDialog(title, body) {
return $modal.open({
template: '<div class="modal-header"><h3 class="modal-title">{{ title | trustedHtml }}</h3></div><div class="modal-body" >{{ body | trustedHtml }}</div><div class="modal-footer"><button class="btn btn-primary" ng-click="ok()">OK</button><button class="btn btn-warning" ng-click="cancel()">Cancel</button></div>',
controller: dialogController,
}).result;
function dialogController($scope, $modalInstance) {
$scope.title = title;
$scope.body = body;
$scope.ok = function() {
$modalInstance.close(true);
};
$scope.cancel = function() {
$modalInstance.dismiss(false);
};
}
}
return {
showDialog: showDialog
};
}
]);
})();
(function(){
angular.module('dcpApp')
.filter('trustedHtml', ['$sce', function($sce){
return function(text) {
return $sce.trustAsHtml(text);
};
}]);
})();
(function() {
angular.module('dcpApp').run(['dialogService',
function(dialogService) {
var trueDoPostBack = window.__doPostBack;
window.__doPostBack = function(eventTarget, eventArgument) {
var target = angular.element(document.getElementById(eventTarget)),
postbackConfirm = target.attr('data-postback-confirm'),
postbackConfirmTitle = target.attr('data-postback-confirm-title')
if (postbackConfirm) {
dialogService.showDialog(postbackConfirmTitle, postbackConfirm)
.then(function() {
trueDoPostBack(eventTarget, eventArgument);
});
} else {
trueDoPostBack(eventTarget, eventArgument);
}
};
}
]);
})();