Javascript 在AngularJS中使用带有ngSanitize的指令
在我的应用程序中,我有一个非常简单的控制器,其任务是显示消息:Javascript 在AngularJS中使用带有ngSanitize的指令,javascript,angularjs,Javascript,Angularjs,在我的应用程序中,我有一个非常简单的控制器,其任务是显示消息: angular.module("app.components.messages", ['ngSanitize']) .controller("MessageBoxController", ['$scope', function($scope) { $scope.messageType = 'info'; $scope.hidden = true; $scope.$on('message.error', f
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,我使用它只是因为它看起来很方便。解决了类似的问题。只需重命名指令并将消息传递给指令即可。
例如:
<div message="message"></div>
这几乎奏效了。ng click部分不再被删除,但是当我单击链接时,该函数不会被调用。控制台中没有错误消息或任何内容:\n确定问题与作用域有关。当我广播消息时,它是从rootScope完成的,因此,请单击指向该消息的链接。将我的ng click函数从$scope.myFunc=更改为$rootScope.myFunc=似乎起到了作用。进行了一些更新。在指令中将范围设置为false。