为什么我的指令不能使用ng-bind-html指令?

时间:2013-12-12 03:04:02

标签: javascript html angularjs

我收到了以下指令

productApp.directive('notification', function($timeout) {
    return {
        restrict : 'E',
        replace : false,
        scope : {
            type: "=",
            message: "="
        },
        template: '<div class="alert {{type}} alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>{{message}}</div>',
        link : function(scope, element, attrs) {
            console.log(attrs);
            $timeout(function() {
                element.hide();
            }, 3000);
        }
    }
});

在视图中我得到了这个:

<div ng-bind-html="notificationPoint">
        <!-- <notification type="alert.type" message="alert.msg"></notification>-->
    </div>

在控制器里面我正在这样做:

$scope.notificationPoint = '<notification type='alert-success' message='this is a test'></notification>'

因此,您可能会意识到,我想制作一个“通知包装器”,其中包含所有通知(子项)(使用通知指令),例如我在数据库中添加一行,删除产品或其他任何内容。因此,这个包装器将不断包含出现和消失的通知。

发生这种情况时,当我在运行它时查看源代码时,没有任何内容插入到包装器div中,甚至在使用ng-bind-html指令时甚至都没有传递给指令代码。

有人知道这是不是一个错误?或者我做错了什么?

由于

2 个答案:

答案 0 :(得分:1)

正如其他人在评论中所说,你应该将消息文本传递给指令。但是,请回答原始问题:ng-bind-html必须与$sce信任的内容一起使用。例如:

app.controller('myCtrl', function($sce) {
  ...
  $scope.notificationPoint = $sce.trustAsHtml('<notification type='alert-success' message='this is a test'></notification>')
  ...
} 

答案 1 :(得分:0)

我发现这个库的通知,ITS令人难以置信的安装是多么容易,使用起来有多简单!只需通过控制器调用

flash.success = 'Test!';

然后,在控制器中注入服务。

您将向视图发送包装内成功通知(我想做)

该库被称为角闪光。这是带有API文档的github

https://github.com/wmluke/angular-flash

像我一样享受!哈哈惊讶我喜欢它 -