【问题标题】:My view lost the configuration when refresh刷新时我的视图丢失了配置
【发布时间】:2017-04-15 18:26:08
【问题描述】:

我是 AngularJS 的新手,在解决一些小问题时遇到了很多问题。 当我的视图刷新时,这将丢失配置。让我解释得更好。我在视图顶部有一个选项卡,下面有一些标签和 texbox。当我的代码从 sqlite 中保存 pup 一些小配置时,离子忘记了选项卡并且对象上升,被选项卡隐藏。

按照用于调用 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>

我需要让它在页面刷新时工作,因为我需要填充文本框下方的网格。 如果有人能帮助我,我将不胜感激。谢谢大家。

【问题讨论】:

  • 我从来没有用过Cordova,所以这基本上是一个猜测,但是你有没有考虑过当你刷新任何东西时,任何没有保存的数据都会丢失?因此,如果您在刷新窗口时保存数据,然后重新加载,它可能会起作用。
  • 你好,我的朋友 LunarWatcher。我已经将数据保存在全局变量中,但经过一些研究,我发现我做错了什么。我正在使用代码'$window.location.reload();' ,这给了我问题。我会完成这个问题。感谢您的帮助。

标签: javascript android angularjs cordova ionic-framework


【解决方案1】:

最后我解决了这个问题。有相同问题的人请关注更正。

之前的代码:

.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 });
};
}])

我等待帮助任何人解决我的问题。感谢所有试图帮助我的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-30
    • 2020-05-09
    • 1970-01-01
    • 2021-02-14
    • 2017-04-19
    • 2020-11-20
    • 2016-11-16
    • 1970-01-01
    相关资源
    最近更新 更多