module.exports = function timelineMessageDirective(Timelines, $sce, $interpolate) { var defaults = { message: '', type: 'info', ttl: 5000 } return { restrict: 'AE', replace: true, template: '', transclude: true, link: function (scope, iElem, iAttrs, ctrls, transcludeFn) { var options = angular.extend({}, defaults, scope.$eval(iAttrs.timelineMessage)) transcludeFn(function (elem, scope) { var e, html, interpolateFn, safeHtml; // Create temporary wrapper element so we can grab the inner html e = angular.element(document.createElement('div')) e.append(elem) html = e.html() // Interpolate expressions in current scope interpolateFn = $interpolate(html) html = interpolateFn(scope) // Tell Angular the HTML can be trusted so it can be used in ng-bind-html safeHtml = $sce.trustAsHtml(html) // Add notification Timelines.add(safeHtml, options.type, options.ttl) }) } } }