在我的应用程序中,我有一个非常简单的控制器,其任务是显示消息:
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,但是事实证明ngSanitize会过滤掉某些属性,因此无法正常工作。
单击消息中的链接后,如何使事情发生?我不一定必须使用ngSanitize,我只是使用它是因为它看起来很方便。
最佳答案
Here解决了类似的问题。只需重命名指令并传递给您message
的指令即可。
例如:
<div message="message"></div>