从数据库加载数据后,不希望再次在angularjs中切换选项卡上发送数据库调用

时间:2016-12-13 15:26:50

标签: angularjs

问题陈述: 我正在使用角度js。如果我加载一个选项卡,我的数据库调用将返回一些表格和图形数据。然后我移动到下一个选项卡,现在如果我回到我的第一个选项卡上,数据库调用将再次进入数据库。我想在一个参数加载数据后停止这些数据库调用,然后它应该保持加载直到param被更改。

我正在使用角度js及其路由来切换标签。

app.config(function ($routeProvider) {
$routeProvider
.when('/daily',
{
 title: 'Daily - Stats',
 templateUrl: '/SPA/Daily.html'
}).when

请建议我一些解决方案,因为我是AngularJS的新手

2 个答案:

答案 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()