问题陈述: 我正在使用角度js。如果我加载一个选项卡,我的数据库调用将返回一些表格和图形数据。然后我移动到下一个选项卡,现在如果我回到我的第一个选项卡上,数据库调用将再次进入数据库。我想在一个参数加载数据后停止这些数据库调用,然后它应该保持加载直到param被更改。
我正在使用角度js及其路由来切换标签。
app.config(function ($routeProvider) {
$routeProvider
.when('/daily',
{
title: 'Daily - Stats',
templateUrl: '/SPA/Daily.html'
}).when
请建议我一些解决方案,因为我是AngularJS的新手
答案 0 :(得分:1)
使用以下方法
app.config(function ($routeProvider) {
$routeProvider
.when('/daily',
{
title: 'Daily - Stats',
templateUrl: '/SPA/Daily.html',
resolve:{
//code to load the it from database use a FACTORY
//getgraphDetails call the serviceName.getgraphDetails
}
})
});
为appVariables定义两个工厂,如下所示,另一个用于所有网络服务电话
myApp.factory('appVariables', function appVariablesFactory() {
var graphDetails=[];
return {
graphDetails:graphDetails
}
});
myApp.factory('serviceName', function serviceNameFactory(appVariables) {
return {
//have your http call here
getgraphDetails :function()
{
if(appVariables.graphDetails!=null||appVariables.graphDetails!=undefined);
{
//raise the api call to get the details
}
}
});
无法提供完整的代码,因为您的帖子中没有您的服务电话。
答案 1 :(得分:1)
使用仅调用API一次然后存储数据的服务:
app.service('MyService', function() {
this.getData = function() {
if(this.data === undefined || this.data === null) {
//Call your API and store result in this.data
}
return this.data;
};
});
您现在可以在控制器中inject使用此服务并致电MyService.getData()
。