Derek Hannah
Derek Hannah

Reputation: 547

$state.go($state.current, {}, {reload: true}); makes my header disappear

when I call $state.go($state.current, {}, {reload: true}); in my controller my header disappears

if I comment this out, the header does not disappear, but then I don't have the desired affect of my view updating

its not hidden, its completely removed from the DOM

the code below is a function that uses a cordova plugin to invoke a native sdk, after the sdk completes, it returns to the javascript layer, the header is there then when it hits $state.go($state.current, {}, {reload: true}); the header goes away

function miSnapCheckFront(){ //get image of front of check
        MiSnapPlugin.captureCheck('front', success, error);

        function success(data){
            depositService.checkObj.frontImage = data.EncodedImage;
            depositService.checkObj.frontImageOriginal = data.OriginalImage;
            $state.go($state.current, {}, {reload: true});
        }

        function error(err){
            navigator.notification.alert('MiSnap is Cancelled check scan: ' + err, onClose, 'Scan Error', 'Close');
            function onClose(){}
        }
    }

<ion-view hide-back-button="true" can-swipe-back="false" view-title="{{vm.title}}">
<ion-nav-buttons side="left">
    <button class="button button-icon button-clear ion-ios-close-empty" data-ng-click="vm.cancelCheck()"></button>
</ion-nav-buttons>
<ion-content>
    <form name="vm.captureCheckForm" novalidate>
        <div class="list-borderless">
            <div class="card">
                <!-- Memo -->
                <label class="item item-input" ng-cloak>
                    <span class="input-label">Memo</span>
                    <input type="text" name="memo" data-ng-model="vm.memo" placeholder="Check Memo" data-ng-change="vm.checkMemoChange()">
                </label>
            </div>

            <!-- Scan Check Front Button -->
            <div class="card" data-ng-click="vm.miSnapCheckFront()">
                <div class="item item-text-wrap" data-ng-class="{'lightest-yellow-bg': vm.frontImage === 'error'}">
                    <div class="item item-icon-right" data-ng-class="{'lightest-yellow-bg': vm.frontImage === 'error'}">
                        <h2 data-ng-show="vm.frontImage === null || vm.frontImage === 'error'">Capture Check Front</h2>
                        <img class="capture-check-thumbnail ng-hide" data-ng-show="vm.frontImage !== null" data-ng-src="{{'data:image/jpeg;base64,' + vm.frontImage}}"><!-- {{'data:image/jpeg;base64,' + vm.frontImage}} -->
                        <i class="icon ion-ios-camera-outline positive ng-hide" data-ng-show="vm.frontImage === null"></i>
                        <i class="icon fa fa-check-circle-o balanced ng-hide" data-ng-show="vm.frontImage !== null"></i>
                    </div>
                </div>
            </div>

            <!-- Scan Check Back Button -->
            <div class="card" data-ng-click="vm.miSnapCheckBack()">
                <div class="item item-text-wrap" data-ng-class="{'lightest-yellow-bg': vm.rearImage === 'error'}">
                    <div class="item item-icon-right" data-ng-class="{'lightest-yellow-bg': vm.rearImage === 'error'}">
                        <h2 data-ng-show="vm.rearImage === null || vm.rearImage === 'error'">Capture Check Back</h2>
                        <img class="capture-check-thumbnail ng-hide" data-ng-show="vm.rearImage !== 'error' && vm.rearImage !== null" data-ng-src="{{'data:image/jpeg;base64,' + vm.rearImage}}"><!-- data:image/jpeg;base64, -->
                        <i class="icon ion-ios-camera-outline positive" data-ng-hide="vm.rearImage !== null"></i>
                        <i class="icon fa fa-check-circle-o balanced ng-hide" data-ng-show="vm.rearImage !== 'error' && vm.rearImage !== null"></i>
                        <i class="icon ion-ios-reverse-camera-outline energized ng-hide" data-ng-show="vm.rearImage === 'error' && vm.rearImage !== null"><span class="rescan-text">Rescan</span></i>
                    </div>
                </div>
            </div>
        </div>
    </form>
</ion-content>
<!-- Footer -->
<div class="bar bar-footer royal-bg stable" >
    <a class="title" data-ng-click="vm.submitCheck(vm.captureCheckForm.$error)">
        <span ng-if="vm.type === 'SINGLE'">Submit Check</span>
        <span ng-if="vm.type === 'MULTIPLE'">Add Check</span>
    </a>
</div>

Upvotes: 0

Views: 1578

Answers (3)

humatios
humatios

Reputation: 11

I fixed this with the next code:

$state.go($state.current, {}, {reload: false})
    .then(function(){
        setTimeout(function() {
            $window.location.reload(true);
     });
 })

Upvotes: 1

SimonShyu
SimonShyu

Reputation: 95

You can add following code in angular.run()

$rootScope.$on('$ionicView.enter', function(e) {
    $ionicNavBarDelegate.showBar(true);
});

Upvotes: 1

Derek Hannah
Derek Hannah

Reputation: 547

I fixed this just by using $scope.$apply()

Upvotes: 0

Related Questions