Developing an alert notification in AngularJS
One simple thing you can do is remove the need for the $observe and place the template inside the directive and use ngShow to handle the show/hide action.  (also added in scope that has two way binding to the alertData object.)

Updated Directive

    var myApp = angular.module('myApp', []);

    myApp.directive('notification', ['$timeout', function ($timeout) {
        return {
            restrict: 'E',
            template:"&lt;div class='alert alert-{{alertData.type}}' ng-show='alertData.message' role='alert' data-notification='{{alertData.status}}'&gt;{{alertData.message}}&lt;/div&gt;",
            scope:{
              alertData:"="
            }
        };
    }]);    


And html

&lt;div class="container" style="width: 480px; margin-top: 50px;"&gt;
    &lt;notification alert-data="notification"&gt;&lt;/notification&gt;
&lt;button id="submit" name="submit" class="btn btn-default" type="submit" ng-click="notification.status = 'show'; notification.message = 'Oh yeah!'; notification.type = 'info';"&gt;Show&lt;/button&gt;




Updated plunkr