Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在AngularJS中使用带有ngSanitize的指令_Javascript_Angularjs - Fatal编程技术网

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。