angularjs - How to modify HTML content based on angular controller -


i trying build login page , functionality page using angularjs spa.

i have following controller:  - logincontroller   - predictioncontroller  , following single page:  - home.html : binded logincontroller  - trend.html : binded predictioncontroller  - index.html : has no controller 

i have navigation panel in index.html , want modify(add or remove) number of tabs based on login. don't want write navigation panel logic in each page reusable. unable figure out way using additional controller because using ng-route guess won't allow me use multiple controller same page.

here html code snippet index.html:

<body>         <nav class="navbar navbar-inverse navbar-fixed-top">             <div class="container-fluid">                 <div class="navbar-header">                   <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">                     <span class="sr-only">toggle navigation</span>                     <span class="icon-bar"></span>                     <span class="icon-bar"></span>                     <span class="icon-bar"></span>                   </button>                   <a class="navbar-brand" href="#/">myproject</a>                  </div>                 <div id="navbar" class="collapse navbar-collapse">                     <ul class="nav navbar-nav">                         <li class="active"><a href="#/">home</a></li>                         <li><a href="#trend">trend</a></li>                     </ul>                 </div><!--/.nav-collapse -->             </div>         </nav>      <div ng-app="chartapp">         <div ng-view></div>                              </div>  </body> 

here code controller:

var app = angular.module('chartapp', ['ngroute']);      app.factory('userverified', function() {         return   {bool: false};          });       app.config(function ($routeprovider) {         $routeprovider         .when('/',{             templateurl: 'pages/home.html',             controller: 'logincontroller'         })         .when('/trend', {             templateurl: 'pages/trend.html',             controller: 'predictioncontroller'           })        });      app.controller('logincontroller', ['$scope', '$http', 'userverified', function($scope, $http, userverified){         $scope.haspermission = userverified.bool;      $scope.getauthentication = function(){         console.log($scope.userid, $scope.pwd)         $http.get('/getauth', {                 params: { user_id: $scope.userid, pwd: $scope.pwd }         }).success(function (response){             console.log(response);             userverified.bool = response;             $scope.haspermission = userverified.bool;         });      }  }]); 

i'm not sure if information enough please edit or let me know if i'm missing information.

i believe you're going have move ng-app directive body, , create navigationcontroller can require userverified factory , maintain state of navigation.

you add ng-controller directive navbar explicitly, , router should work same.

the html might this.

<body ng-app="chartapp">      <nav ng-controller="navigationcontroller" class="navbar navbar-inverse navbar-fixed-top">         <div class="container-fluid">             <div class="navbar-header">                 <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">                     <span class="sr-only">toggle navigation</span>                     <span class="icon-bar"></span>                     <span class="icon-bar"></span>                     <span class="icon-bar"></span>                 </button>                  <!-- display if $scope.loggedin -->                 <a ng-show="loggedin" class="navbar-brand" href="#/">myproject</a>             </div>              <div id="navbar" class="collapse navbar-collapse">                 <ul class="nav navbar-nav">                     <li class="active"><a href="#/">home</a></li>                     <li><a href="#trend">trend</a></li>                 </ul>             </div><!--/.nav-collapse -->         </div>     </nav>      <div ng-view></div> </body> 

navigationcontroller

app.controller('navigationcontroller', function($scope, userverified) {     $scope.$watch(function() {         return userverified.bool;     }, function(state, oldstate) {         $scope.loggedin = state;     }); }); 

Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -