2017-04-15 8 views
0

AngularJSの新機能で、少しの問題を解決するために多くの問題が発生しています。 ビューをリフレッシュすると設定が失われます。私はより良く説明しましょう。ビューの上部にタブがあり、その下にいくつかのラベルとテクスチャボックスがあります。私のコードは、sqliteからいくつかの小さな設定を保存するときにイオンはタブを忘れて、オブジェクトが上昇し、タブによって隠されています。リフレッシュ時の表示が失われました

sqliteを呼び出すためのコードに従います。

コントローラ

.controller('ClienteDetalheCtrl', ['clientesFactory', '$scope', '$state', '$window', '$rootScope', function (clientesFactory, $scope, $state, $window, $rootScope) { 
    buscaEquipamento(); 
    alteraData(); 

    function buscaEquipamento() { 
     clientesFactory.selectTodos('equipamento'); 
     $scope.selecionaInstalacao = clienteselec; 
    } 

}

SQLiteは呼ば:

var db = null; 
var clienteselec = []; 
angular.module('sqlite', ['ionic', 'ngCordova']) 

.run(function ($ionicPlatform, $cordovaSQLite) { 
    $ionicPlatform.ready(function() { 
     db = $cordovaSQLite.openDB({ name: "rollers.db", location: 1 }); 

     $cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS clientes (id integer primary key, nome varchar(40), TC int)"); 
     $cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS instalacao (id integer primary key, idCliente int, dataInst datetime)"); 
     $cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS manutencao (id integer primary key, idCliente int, idInstalacao int, dataManut datetime)"); 
     $cordovaSQLite.execute(db, "CREATE TABLE IF NOT EXISTS equipamento (id integer primary key, idCliente int, idInstalacao int, idManutencao int, TC int, posicao varcar(1), Rolo varchar(40), dataEquip datetime)"); 
    }); 
}) 

.factory('clientesFactory', function ($ionicPlatform, $cordovaSQLite) { 

     selectTodos: function (tab) { 
      var query = "SELECT * FROM " + tab; 

      clienteselec = []; 
      $cordovaSQLite.execute(db, query, []).then(function (result) { 
       if (result.rows.length) { 
        for (var i = 0; i < result.rows.length; i++) { 
         clienteselec.push(result.rows.item(i)); 
        } 
       } else { 
        console.log("no data found!"); 
       } 
      }, function (err) { 
       console.log("error" + err); 
      }); 
     }, 
}); 

情報が示されますビュー:

<ion-header> 

    <ion-navbar> 
    <ion-title>Instalacao</ion-title> 
    </ion-navbar> 

</ion-header> 


<ion-content padding> 
    <label class="item item-input"> 
     <span class="input-label">Cliente:</span> 
     <input type="text" id="TxtCli" disabled /> 
    </label> 
    <label class="item item-input"> 
     <span class="input-label">TC</span> 
     <input type="text" id="TxtTC"/> 
    </label> 
    <label class="item item-input"> 
     <span class="input-label">Data:</span> 
     <input type="text" id="TxtData" disabled /> 
    </label> 
    <label class="item item-input"> 
     <span class="input-label">Hora:</span> 
     <input type="text" id="TxtHora" disabled /> 
    </label> 

    <div ng-controller="ClienteDetalheCtrl"> 
    <ion-item ng-repeat="inst in selecionaInstalacao"> 
     {{inst.TC}}, {{inst.posicao}}, {{inst.Rolo}}, {{inst.dataEquip}} 
    </ion-item> 
    <ion-item ng-show="!selecionaInstalacao.length">No events</ion-item> 
    </div> 
     <button ng-click="alteraInstalacao()">Altera</button> 
</ion-content> 

私はそれがで動作させる必要がありますth私はグリッドにテキストボックスを詰め込む必要があるので、ページのリフレッシュ。 誰かが私を助けることができれば非常に感謝します。みんなありがとう。

+0

私はCordovaを使用したことがないので、これは基本的には推測ですが、何かを更新すると保存されていないデータは失われると考えていますか?したがって、ウィンドウをリフレッシュした後にデータを保存し、その後にリロードすると、動作する可能性があります。 – Zoe

+0

こんにちは私の友達LunarWatcher。私はすでにグローバル変数にデータを保存していましたが、何らかの調査の後、私は何か間違っていることを発見しました。私は '$ window.location.reload();'というコードを使用していました。と、私に問題を与えていた。私はその質問を終わらせます。お手伝いありがとう。 – FelipeF

答えて

0

最後に私はこの問題を解決しました。誰が同じ問題を抱えることができるのか、その修正に従ってください。

コードは、前:補正後の

.controller('ClienteCtrl', ['clientesFactory', '$scope', '$state', '$window', '$rootScope', function (clientesFactory, $scope, $state, $window, $rootScope) { 
$scope.cadastraCliente = function (id, nome, TC) { 
    $rootScope.idCliente = id; 
    $rootScope.nomeCli = nome; 
    $rootScope.TC = TC; 

    if ($rootScope.TC === null) { 
     $rootScope.TC = 1; 
    } else { 
     $rootScope.TC = $rootScope.TC + 1; 
    } 

    $state.transitionTo('tab.cliente-detalhe', {}, { reload: true, inherit: false }); 
}; 
    $window.location.reload(); 
}]) 

コード:

.controller('ClienteCtrl', ['clientesFactory', '$scope', '$state', '$window', '$rootScope', function (clientesFactory, $scope, $state, $window, $rootScope) { 
$scope.cadastraCliente = function (id, nome, TC) { 
    $rootScope.idCliente = id; 
    $rootScope.nomeCli = nome; 
    $rootScope.TC = TC; 

    if ($rootScope.TC === null) { 
     $rootScope.TC = 1; 
    } else { 
     $rootScope.TC = $rootScope.TC + 1; 
    } 

    $state.transitionTo('tab.cliente-detalhe', {}, { reload: true, inherit: false }); 
}; 
}]) 

私は私の解像度で人を助けるのを待ちます。私を助けようとしたみなさん、ありがとう。

関連する問題