2013-12-12 4 views
1

я получил следующую директивуПочему моя директива не работает с директивой ng-bind-html?

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.

Кто-нибудь знает, если это ошибка? или что я делаю неправильно?

Благодаря

+0

Почему вы даже пытаетесь использовать 'ng-bind-html'? Это не для принятия в директивных шаблонах – charlietfl

+0

эй снова charlie! : ') что еще я могу сделать для этого? :(Я хотел бы иметь статическую родительскую оболочку, содержащую все уведомления, которые im собирается отправлять с контроллера в представление с динамическими данными. – user3078876

+0

передает текстовые сообщения данных в директиву или, возможно, событиями, но конфигурирование html в директиве – charlietfl

ответ

1

Как другие говорили в комментарии, вы должны пройти сообщение текст директивы. Однако ответ на ваш вопрос: ng-bind-html необходимо использовать с контентом, которому доверяют $sce. Например:

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

Я закончил с помощью модуля Angular-Flash для того, что мне нужно, проверьте его! УДИВИТЕЛЬНО отправлять уведомления на просмотр так хорошо и красиво. – user3078876

0

я нашел эту библиотеку для уведомлений, ITS INCREDIBLE как легко установить, насколько легко в использовании! просто позвонив из контроллера

flash.success = 'Test!'; 

Затем введите услугу в контроллер.

Вы послали к представлению уведомления успеха внутри оболочки (как я хотел сделать)

Библиотеки называются угловой вспышкой. Вот GitHub с API док

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

Наслаждайтесь столько, сколько я сделал !!! HAHA AMAZING I LOVE IT -

Смежные вопросы