2016-11-08 4 views
0

У меня есть контроллер и вы хотите передать значение области действия другому.Передайте значение области действия в другую область в AngularJS

app.controller("ChatController", function($scope, $firebaseArray, $timeout, $firebaseAuth, $window) { 
    var ref = firebase.database().ref().child("messages"); 
    var auth = $firebaseAuth(); 

    $scope.messages = $firebaseArray(ref); 

    $scope.sendMessage = function() { 

    //var firebaseUser = $scope.firebaseUser; 

    $scope.messages.$add({ 
     text: $scope.newMessageText, 
     current_time: new Date().toJSON() 
    }); 
    $scope.newMessageText = null; 
    }; 

    $scope.login = function() { 
     $scope.firebaseUser = null; 
     $scope.error = null; 

     auth.$signInWithPopup('google').then(function(firebaseUser) { 
     $scope.firebaseUser = firebaseUser; //access this to the sendMessage scope 
     console.log(firebaseUser.user); 
     }).catch(function(error) { 
     $scope.error = error; 
     }); 

    }; 

}); 

Выше меня, у меня есть sendMessage и loginscope. Я хочу передать значение $scope.firebaseUser в loginscope. Это возможно?

+0

До сих пор не получили то, что вы точно ищете после проверки вашего кода. – Jigar7521

+0

@ Jigar7521 обновил код, вы можете увидеть новый комментарий в области sendMessage. Это то, чего я пытаюсь достичь. – FewFlyBy

+1

ok теперь это довольно понятно – Jigar7521

ответ

2

Я думаю, что вы смешали лексическую область обзора Javascript и угловые области. В угловом диапазоне область действия находится на уровне контроллера. Это означает, что все внутри контроллера имеет доступ к области контроллера. В свою очередь, это означает, что вы можете просто использовать $scope.firebaseUser в вашей sendMessage функции следующим образом:

$scope.sendMessage = function() { 

    var firebaseUser = $scope.firebaseUser; 

    $scope.messages.$add({ 
     text: $scope.newMessageText, 
     current_time: new Date().toJSON() 
    }); 
    $scope.newMessageText = null; 
    }; 

Пытались это вы? У вас возникли проблемы?

Пожалуйста, смотрите here для получения более подробной информации

+0

Oh. Это сработало. Я на самом деле думаю о переходе на другой контроллер LOL – FewFlyBy

0

Я сделал некоторые изменения в нем, пожалуйста, экспериментировать и дайте мне знать, я жду. Я использовал $ rootScope для этого сценария, который присутствует как глобальная переменная в угловом.

Примечание: Я пишу этот код, прогнозируя, что существующий код полностью соответствует действительности.

app.controller ("ChatController", функция ($ Объем, $ firebaseArray, $ таймаут, $ firebaseAuth, $ окна, $ rootScope) { вар исх = firebase.database(). Исх(). Ребенок ("сообщения"); вар AUTH = $ firebaseAuth(); $ rootScope.firebaseUser = NULL; $ scope.messages = $ firebaseArray (ссылка)

 $scope.sendMessage = function() { 

     var firebaseUser = $rootScope.firebaseUser; 


     $scope.messages.$add({ 
      text: $scope.newMessageText, 
      current_time: new Date().toJSON() 
     }); 
     $scope.newMessageText = null; 
     }; 

     $scope.login = function() { 
      $scope.firebaseUser = null; 
      $scope.error = null; 

      auth.$signInWithPopup('google').then(function(firebaseUser) { 
      $scope.firebaseUser = firebaseUser; //access this to the sendMessage scope 
      $rootScope.firebaseUser = firebaseUser.user; 
      console.log(firebaseUser.user); 
      }).catch(function(error) { 
      $scope.error = error; 
      }); 

     }; 

    }); 
Смежные вопросы