angularjs:打开一个页面然后只加载数据

时间:2017-08-15 03:05:35

标签: javascript angularjs ionic-framework

我目前的离子代码能够获取数据,然后打开页面。但是,我想打开页面然后只加载来获取数据。我想更改序列,因为加载一些数据需要10秒。

这是我的代码:

  $scope.openDetail = function (stock) {
    console.log(stock.symbol);
    $ionicLoading.show();

    //stockCondition
    if(stock.symbol.length<=$scope.stockCondition) {
      $stockDataFactory.getStockDetails(stock).then(
        function success(data) {
          $globalFactory.personalStockData = data.details;
          $globalFactory.personalStockNews = data.news;
          $ionicLoading.hide();
          $state.go("app.page1");

        },
        function error(error) {
          alert(error.message);
          console.error(error);
          $ionicLoading.hide();
        }
      );
    }
    else{//WarrentCondition
      $stockDataFactory.getWarrentDetails(stock).then(
        function success(data) {

          $globalFactory.personalStockData = data.details;
          $globalFactory.personalStockNews = {};
          $ionicLoading.hide();
          $state.go("app.page1");
        },
        function error(error) {
          alert("Stocks Not Found.");
          console.error(error);
          $ionicLoading.hide();
        }
      );
    }
  };//end 

为了首先打开$state.go("app.page1");,然后只加载数据,我该如何更改我的代码?

2 个答案:

答案 0 :(得分:0)

你应该显示page1的html模板。 我的方法是使用ng-if =&#34; personalStockData&#34;使用$ setTimeout()技巧仅在加载数据时显示数据。看起来像这样

&#13;
&#13;
//page1 controller
$stockDataFactory.getStockDetails(stock).then(
        function success(data) {

          $setTimeout(function(){
            $scope.personalStockData = data.details;
            $scope.personalStockNews = data.news;
            
          })
        },
        function error(error) {
          alert(error.message);
          console.error(error);
          $ionicLoading.hide();
        }
      );
&#13;
&#13;
&#13; HTML

&#13;
&#13;
<div>
...
  <div ng-if="personalStockData">
  </div>
  <div ng-if="personalStockNews">
  </div>
...
</div>
&#13;
&#13;
&#13;

无论如何都试图不使用全局变量,这些变量很难跟踪。

答案 1 :(得分:0)

您必须将当前页面明确的decision数据移至app.page1。例如$scope.stockCondition。我怀疑stock.symbol是一样的。必须查看stock变量是什么。

有很多方法可以实现这一目标。使用查询字符串是一种选择,也是最常规的方式。有些人喜欢将它们存储在cookies中,效率不高但适用于某些用例。

同样,我不确定$state是什么。假设它是angular-ui-router的州管理者。然后你可以通过;

实现这一目标
$state.go("app.page1", {
    stockCondition: $scope.stockCondition,
    stocksymLen: stock.symbol.length
});

然后在app.page控制器上,您可以通过执行$state.params.stockCondition来检索查询字符串参数的值。

decision个变量带到下一页后。下一步是将它们插入您从另一页到if-else的{​​{1}}语句中。

伪码:

app.page1