繁体   English   中英

将范围的值传递给AngularJS中的另一个范围

[英]Pass value of scope to another scope in 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;
      });

  };

});

在我上方,我有sendMessagelogin scope 我想将$scope.firebaseUser的值$scope.firebaseUserlogin scope 那可能吗?

我认为您混合了Javascript词法作用域和Angular范围。 在Angular中,作用域位于控制器级别。 这意味着控制器中的所有内容都可以访问控制器的作用域。 反过来,这意味着您可以只在sendMessage函数中使用$scope.firebaseUser ,如下所示:

$scope.sendMessage = function() {

   var firebaseUser = $scope.firebaseUser;

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

你有尝试过吗? 您遇到任何问题了吗?

在这里查看更多详细信息

我在其中进行了一些编辑,请尝试一下,让我知道,我在等待。 在这种情况下,我已经使用$ rootScope作为角度的全局变量存在。

注意:我通过预测您现有的代码完全正确来编写此代码。

app.controller(“ ChatController”,function($ scope,$ firebaseArray,$ timeout,$ firebaseAuth,$ window,$ rootScope){var ref = firebase.database()。ref()。child(“ messages”); var auth = $ firebaseAuth(); $ rootScope.firebaseUser = null; $ scope.messages = $ firebaseArray(ref);

      $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;
          });

      };

    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM