2016-10-06 6 views
0

フォームを送信してユーザープロファイルを保存すると、レコードが正常に保存されたかどうかを示す警告メッセージが表示されます。 3つのブートストラップタブがあり、保存したいフォームはアクティブなタブにあります。フォームを保存し、ブートストラップタブで状態を再読み込みする

$stateがリロードされる必要があるため、警告が表示されないと思います。私はこれを行う方法がわかりません。このページが別のルートだった場合、私はおそらく$state.reload()またはこれに類するものを行うことができます。別のタブをクリックして戻ると、アラートが表示されます。

私は試しました:$state.transitionTo('myprofile', null, {reload: true, notify:true});それでも運がありません。アラートを表示する

HTML:

<div ng-if="profilesaved == 'saved'" class="alert alert-success fade in"> 
    <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a> 
    <strong>Success!</strong> Your profile has been saved 
</div> 

関連状態:

.state('myprofile', { 
    url: '/my-profile', 
    templateUrl: 'pages/my-profile.html', 
    controller: 'MyProfileController as myprofile', 
    resolve: { 
     // controller will not be loaded until $requireSignIn resolves 
     "firebaseUser": ["$firebaseAuthService", function($firebaseAuthService) { 
     // If the promise is rejected, it will throw a $stateChangeError 
     return $firebaseAuthService.$requireSignIn(); 
     }] 
    }   
}) 

DBレコードを設定する関数。

$scope.submit = function() { 
    var record = firebase.database().ref().child('myprofile/'+firebase.auth().currentUser.uid) 
       .set({ 
         name: $scope.profile.name, 
         address: $scope.profile.address 
        } 

       ) 
       .then(function(data) { 
        console.log('profile saved'); 
        $scope.profilesaved = "saved"; 


       }) 
       .catch(function(error) { 
        console.log('profile save failed'); 
        $scope.profilesaved = "save-failed"; 

       }); 
}; 

答えて

0

ない、これはこの問題を解決するための最良の方法ですが、これはトリックをしたかどうかわから:

.then(function(data) { 
    console.log('profile saved'); 
    $scope.profilesaved = "saved"; 
    $scope.$apply(); 
    $timeout(function(){$state.reload();}, 4000); 
}) 
関連する問題