在AngularJS中使用带有ngSanitize的指令

时间:2014-12-04 07:59:01

标签: javascript angularjs

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

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,我只是使用它,因为它看起来很方便。

1 个答案:

答案 0 :(得分:0)

Here解决了类似的问题。只需重命名指令并传递给指令message。 例如:

<div message="message"></div>