2015-07-19 2 views
1

У меня есть эта навигация:AngularJS нг клик не работает с сконфигурированным контроллером

    <ul class="dropdown-menu m-t-xs compact" style="float:right !important;right: 0px;"> 
         <li ng-hide="$state.includes('root.projects')"><a ui-sref="portal.user_settings"><span class="icon glyphicon glyphicon-user"></span>User Settings</a></li> 
         <li ng-show="$state.includes('root.projects')"><a ui-sref="root.user_settings"><span class="icon glyphicon glyphicon-user"></span>User Settings</a></li> 
         <li class="divider"></li> 
         <li ng-controller="LoginCtrl"><a href="" ng-click="logout"><span class="icon glyphicon glyphicon-log-out"></span>Logout</a></li> 
        </ul> 

Но когда я нажимаю на logout ссылки, ничего не происходит.

Вот мой контроллер:

'use strict'; 

function LoginCtrl($scope, Authentication, $window, $cookies, $http, $location) { 
    var _self = this; 
    _self.loginProcessing = false; //This is a flag for showing the loader animation while the wait for the login response. 
    _self.error = null; 

    _self.login = function(vm) { //Defines the login function as a variable on the LoginCtrl 
     _self.loginProcessing = true; 
     Authentication.Login(vm.email, vm.password).then(function(data){ 
      _self.loginProcessing = false; 

      $window.sessionStorage['currentUser'] = JSON.stringify(data); 
      $location.path("/projects"); 
     }).catch(function(err) { 
      _self.error = true; 
      _self.loginProcessing = false; 
     }); 
    } 

    _self.logout = function() { 
     alert("CLICKED"); 
     // Authentication.logout().then(function() { 
     // $window.sessionStorage['currentUser'] = null; 
     // 
     // $location.path("/login"); 
     // }); 
    } 
} 

angular.module('controllers').controller('LoginCtrl', LoginCtrl); 

А вот сконфигурированной маршрут:

.state('logout',{ 
    url: "/logout", 
    controller: "LoginCtrl", 
    templateUrl: 'views/logout.html', 
}) 

Я 100% новый в AngularJS, поэтому, пожалуйста, простите мое невежество. Благодаря!

+0

вы лечите переменный вид, как будто они являются частью $ объема, но контроллер не настроен на $ рамки но для 'controllerAs'. Как назначить контроллеры для просмотра? – charlietfl

+0

Я поменял опцию 'controller' на маршруте' LoginCtrl как LoginCtrl', и он все еще не работает. Я не уверен, что это то, что вы имеете в виду – dennismonsewicz

+1

, что означает, что вам нужно префикс всех переменных контроллера в поле зрения с этим псевдонимом и точкой – charlietfl

ответ

1

вид используется сконфигурирован для $ объема ,, пока ваш контроллер использует псевдоним контроллера ,, так что вы можете использовать эту линию, чтобы сделать кнопку РАБОТЫ

<li ng-controller="LoginCtrl as loginCtrl"><a href="" ng-click="loginCtrl.logout()"><span class="icon glyphicon glyphicon-log-out"></span>Logout</a></li> 

UPDATE: заметить, что в ngClick вы кладете но не выражению функции, так вы поставите выход из системы() не только выходом из системы

+0

Спасибо, что сработало! Однако я смущен. В чем отличие от выполнения псевдонима контроллера здесь и для его выполнения в конфигурации маршрута? – dennismonsewicz

+0

Контроллер, уже назначенный в маршрутизации ... будет запускать 2 экземпляра таким образом – charlietfl

+0

Я думаю, что экземпляр маршрутизации будет проинсталлирован только тогда, когда он перейдет в/logout, но здесь он вводит контроллер в выпадающем меню в навигационной панели не только в/выйти ! –

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