我有一个控制器,想要将范围的值传递给另一个。
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
和login
scope
。我想将$scope.firebaseUser
的值传递给login
scope
。这可能吗?
答案 0 :(得分:2)
我认为你混淆了Javascript词法范围和Angular范围。在Angular中,范围是控制器级别。这意味着控制器中的所有内容都可以访问控制器的范围。反过来,这意味着您可以在$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
答案 1 :(得分:0)
我在里面做了一些编辑,请试验一下,让我知道,我在等。我已将$ rootScope用于此场景,该场景作为角度中的全局变量出现。
注意:我正在编写此代码,预测您的现有代码是 完全正确。
app.controller(“ChatController”,函数($ 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;
});
};
});