我目前的离子代码能够获取数据,然后打开页面。但是,我想打开页面然后只加载来获取数据。我想更改序列,因为加载一些数据需要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");
,然后只加载数据,我该如何更改我的代码?
答案 0 :(得分:0)
你应该显示page1的html模板。 我的方法是使用ng-if =&#34; personalStockData&#34;使用$ setTimeout()技巧仅在加载数据时显示数据。看起来像这样
//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;
<div>
...
<div ng-if="personalStockData">
</div>
<div ng-if="personalStockNews">
</div>
...
</div>
&#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