私はFirebaseの電子メールのUIブートストラップモーダルウィンドウを作っています&パスワードログイン。モーダルウィンドウはユーザにログインし、authData
オブジェクトを返します。モーダルウィンドウが閉じます。その後、authData
オブジェクトは、ホームウィンドウまたはホームコントローラで使用できません。
モーダルウィンドウまたはそのコントローラが子を作成しているようです$scope
。 authData
オブジェクトは、子の$ scopeでは利用できますが、親の$scope
では利用できません。ここで
は、モーダルウィンドウを開くためのコードを実行home.htmlにあるボタンです:ここで
<button type="button" class="btn btn-info" ng-click="openModal('md')">
E-mail & password</button>
は、モーダルウィンドウが開きますHomeController.jsのコードです:
$scope.openModal = function(size) {
var modalInstance = $uibModal.open({
templateUrl: 'javascript/templates/emailLoginModalContent.html',
controller: 'EmailLoginModalInstanceCtrl',
scope: $scope,
size: size
});
};
scope: $scope
と設定しています。私もscope: $parent
を試しました。私は$scope.authData = authData;
と$scope.authData.uid = authData.uid;
を試してみました
app.controller('EmailLoginModalInstanceCtrl', ['$scope', '$uibModalInstance', '$firebaseAuth', function($scope, $uibModalInstance, $firebaseAuth) {
console.log("EmailLoginModalInstanceCtrl controller.");
var ref = new Firebase("https://my-firebase.firebaseio.com/");
$scope.authObj = $firebaseAuth(ref);
// Login user
$scope.loginUser = function(user) {
ref.authWithPassword({
email: $scope.user.email,
password: $scope.user.password
}, function(error, authData) {
if (error) {
console.log("Login Failed!", error);
} else {
console.log("Authenticated successfully with payload:", authData);
$scope.authData = authData;
$scope.authData.uid = authData.uid;
console.log($scope.authData.uid);
$scope.reset();
$scope.cancel();
$scope.$apply(function() {
console.log("Applied!");
});
}
});
};
}]);
注:ここでは
は、モーダルウィンドウのコントローラの一部です。 authData
オブジェクトを親の$ scopeに置くこともできません。
また、ホームコントローラから$getAuth()
を実行しようとしました。それはauthData
オブジェクトを持っていて、それを親の$scope
に置きます。しかし、モーダルウィンドウが閉じたときに実行するホームコントローラのコードを取得できません。
提案がありますか?あなたはこのように、親コントローラ機能へのモーダルコントローラから値を渡すことができ
^これが方法です。 また、$ uibModal ...変数のスコープにアクセスするコールバック関数をモーダルインスタンスに渡すこともできます。これはniceを追加することで解決されます。 var callingFn = function(){//処理する}; VAR modalInstance = $ uibModal.open({ サイズ:サイズ、 templateUrl://..etc 解決:{passFn:!callingFn} – razblack
正しい答え:-)さて、私は '' '近い(結果)を参照してください''で書かれています。ありがとう! –