在我的应用程序中,我有一个非常简单的控制器,其任务是显示消息:

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>

10-02 12:06