В моем приложении есть очень простой контроллер, задачей которого является отображение сообщений:
angular.module("app.components.messages", ['ngSanitize'])
.controller("MessageBoxController", ['$scope', function($scope)
{
$scope.messageType = 'info';
$scope.hidden = true;
$scope.$on('message.error', function(event, message)
{
$scope.message = message;
$scope.messageType = 'error';
$scope.hidden = false;
});
$scope.$on('message.warning', function(event, message)
{
$scope.message = message;
$scope.messageType = 'warning';
$scope.hidden = false;
});
}]);
Тогда само окно сообщения довольно прямолинейно:
<div id="message-box" ng-controller="MessageBoxController"></div>
Я использую ngSanitize, потому что иногда хочу вставлять ссылки в сообщения. Например, в другом контроллере я могу сделать:
$rootScope.$broadcast('message.warning', 'You are about to download ' + file.name + ' which is ' + file.size + '. Your current quota is ' + user.quotaRemaining + ' click <a href="' + url + '">here</a> to confirm.');
И это работает, и выводит ссылку и все. Однако в этом конкретном случае, после того как пользователь щелкнул ссылку, я хотел бы, чтобы он затем запускал другую функцию для обновления информации о квоте пользователя. Я наивно пытался нажать ng-click на свой тег, но оказалось, что ngSanitize отфильтровывает определенные атрибуты, так что это не сработало.
Как я могу заставить что-то происходить после нажатия ссылки в сообщении? Мне не обязательно использовать ngSanitize, я просто использовал его, потому что он показался мне удобным.