2015-07-28 2 views
4

хорошо, поэтому я создаю веб-приложение, используя angular.js. Я начал реализовывать аутентификацию пользователя.Обновление переменной в другом контроллере в AngularJS

Я сделал это с его собственным контроллером:

app.controller("userControl", ["$http", "share", function($http, share){ 
this.login = {}; 
var user = this; 
this.doLogin = function(){ 
    this.login.fn = "login"; 
    $http.post('classes/main.php', user.login).success(function(data){ 
     console.log(data.Error); 
     if(data.Error == undefined){ 
      alert("Success"); 
      share.user = data; 
      window.location.href = "#memberHome"; 
     } 
    }); 
} 
}]); 

и у меня есть страница для членов с его собственным контроллером:

HTML:

<div id="memberHome" data-role="page" ng-controller="member-Ctrl as member"> 
    <nav class="navbar navbar-inverse"> 
     <div class="container-fluid"> 
      <div class="navbar-header"> 
       <p class="navbar-brand" href="#">Calendar</p> 
      </div> 
      <ul class="nav navbar-nav navbar-left"> 
       <li><a href="#">Overview</a></li> 
       <li><a href="#">Friends</a></li> 
      </ul> 

      <ul class="nav navbar-nav navbar-right"> 
       <li><a href="#"><span class="glyphicon glyphicon-user"></span> Logged in as: {{member.user.forename + " " + member.user.surname}}</a></li> 
       <li><a href="#"><span class="glyphicon glyphicon-log-in"></span> Log Out</a></li> 
      </ul> 
     </div> 
    </nav> 
    <div data-role="content"> 
     <calendar selected="day"></calendar> 

    </div> 
</div> 

JavaScript:

app.controller("member-Ctrl", ["share", function(share){ 
this.user=share.user; 

}]); 

I необходимо, чтобы пользовательский контроллер сообщил контроллеру-члену информацию о новом пользователе.

Я гугле это и посмотрел на ответы на аналогичный вопрос, который привел меня к This

и я создал службу, как показано на видео:

app.service("share", function(){ 
    this.user = {} 

}); 

Теперь всякий раз, когда я войти и перенаправляется на страницу memberHome, это говорит мне Logged in as:

Может ли кто-нибудь понять, почему это может быть?

Я очень новичок в Угловом, и изучаю, почти все, когда мне это нужно.

я, вероятно, следует сказать, что я использую JQuery Mobile (для нескольких страниц документа) и Bootstrap 3

+1

Здесь: http://stackoverflow.com/questions/12008908/how-can-i-pass-variables-between-controllers –

+0

я обновил свой сервис и контроллеры основанный на ответе на этот вопрос, он не работал, поэтому я добавил 'console.log()' в функции, которые я добавил в службу. Функция 'setUser' работает, функция' getUser' никогда не вызывается ... Я думаю, мне нужен способ сообщить контроллеру-члену, что пользовательский объект изменился в службе –

ответ

7

Вы можете использовать сервис для обмена информацией между контроллерами или использовать $ rootScope

var app = angular.module('mymodule',[]); 
app.controller('Controller1', ['$scope','$rootScope', 
    function($scope, $rootScope) { 
    $rootScope.showImages = true; 
}]); 

app.controller('Controller2', ['$scope','$rootScope', 
    function($scope, $rootScope) { 
    $rootScope.showImages = false; 
}]); 

и в шаблоне:

<div ng-controller="Controller1"> 
    <div class="images" ng-show="$root.showImages"></div> 
</div> 
+0

спасибо! : D это решило проблему :) –