An Angular.js Confirm Dialog Directive ftw!
We got a complaint from a user who flagged an image by accident, see this issue.
As we are now entering a phase of Complaint Driven Development, this morning I found a
great little fix to this.
Angular.js which we use for the web client, does not come with a built-in confirmation dialogue. However, here is
a great little generic confirm-button directive that avoids the onClick
method and can be reused.
This is how it turned out:
angular.module('mapapp')
.directive 'ngConfirmClick', [() ->
restrict: 'A'
replace: false
link: ($scope, $element, $attr) ->
msg = $attr.ngConfirmClick || "Are you sure?"
clickAction = $attr.confirmedClickAction;
$element.bind('click',(event) ->
if window.confirm(msg)
$scope.$eval(clickAction)
)
]
Having done this, we can now just change the HAML-template code from
%span.set_flag{'ng-show' => '!flagged', 'ng-click' => 'flagImage(nav.currentImage)'}
to something like
%span.set_flag{'ng-show' => '!flagged', 'confirmed-click-action' => 'flagImage(nav.currentImage)', 'ng-confirm-click'=>'Are you sure to flag this image?'}
Resulting in this:
Voilá, another closed issue :)
/peter
Continue the conversation