HTML
<div class="panel-heading"> <h3 class="panel-title"><button class="btn btn-default" ng-click="login.navigate('/')"><span class="glyphicon glyphicon-chevron-left"></span> Back</button> Login</h3> </div>
A good place to learn about custom directives is through the Code School course on AngularJS <https://www.codeschool.com/courses/shaping-up-with-angular-js>.
The change amounts to creating a directive (and supporting HTML partial) as follows:
JavaScript
// app/directives/screenHeading.js (function() { angular.module('myApp'). directive('screenHeading', function() { return { restrict: 'A', templateUrl: 'partials/screenHeading.html', scope: { centerName: '@', leftName: '@', leftIcon: '@', leftFunction: '&', rightName: '@', rightIcon: '@', rightFunction: '&' }, bindToController: true, controllerAs: 'screenHeading', controller: function() { } }; }); })(); // EOF
HTML
<!-- partials/screenHeading.html (obmit work-around script tag) --> <script type="text/ng-template" id="partials/screenHeading.html"> <table style="width: 100%"> <tr> <td style="text-align: left; vertical-align: middle; width: 20%;"> <button type="button" class="btn btn-default btn-sm" ng-if="screenHeading.leftName" ng-click="screenHeading.leftFunction()"><span class="glyphicon {{screenHeading.leftIcon}}" ng-if="screenHeading.leftIcon"></span> {{screenHeading.leftName}}</button> <span ng-if="!screenHeading.leftName"> </span> </td> <td style="text-align: center; vertical-align: middle; width: 60%;"> <strong>{{screenHeading.centerName}}</strong> </td> <td style="text-align: right; vertical-align: middle; width: 20%;"> <button type="button" class="btn btn-default btn-sm" ng-if="screenHeading.rightName" ng-click="screenHeading.rightFunction()"><span class="glyphicon {{screenHeading.rightIcon}}" ng-if="screenHeading.rightIcon"></span> {{screenHeading.rightName}}</button> <span ng-if="!screenHeading.rightName"> </span> </td> </tr> </table> </script> <!-- EOF -->
Finally the directive (replacing existing the existing panel-headings) is used in each of the pages as follows:
On the home page (no back button):
HTML
<div class="panel-heading" ng-attr-screen-heading ng-attr-center-name="Home" > </div>
On the other pages, e.g., login (with back button)
HTML
<div class="panel-heading" ng-attr-screen-heading ng-attr-center-name="Login" ng-attr-left-name="back" ng-attr-left-icon="glyphicon-chevron-left" ng-attr-left-function="login.navigate('/')" > </div>
No comments:
Post a Comment