0

我正在编写一个 Angular 应用程序,它应该通过服务器(在页面加载时)使用新加载的 JSON 对象,或者在某些情况下,如果 obj不存在。

使用服务/工厂,如何检查页面上是否存在 JSON obj?如果是这样,应用程序将使用该数据并将其注入控制器。如果它不存在,应用程序将联系服务器并请求它。

例如:

var data = {item1: foo, item2: foo, item3: foo}

假设它存在于页面加载中。然后 Angular 将使用datavar 作为基础来构建模型。但如果没有,它将调用服务器,获取相同的 obj 并将其用作其基础。

尽管我对 Angular 还很陌生,但我已经阅读/编写了足够多的内容,知道如何发出 AJAX 请求并正确绑定返回的数据。在这种情况下,我想我正在尝试找出检查数据并确定数据是否存在的正确方法,以确定在应用程序运行时是否应该进行调用。

4

1 回答 1

1

您可以使用$cacheFactory创建缓存单例,然后缓存您从 API 检索的数据。

var app = angular.module('myApp', []);

app.factory('cache', function ($cacheFactory) {
    var cache = $cacheFactory('myCache');
    return cache;
});

app.factory('myFactory', function (cache) {
    return {
        getData: function () {
            if (cache.get('mydata') !== undefined) {
                console.log('from cache');
            } else {
                cache.put('mydata', {
                    item1: 'foo',
                    item2: 'foo'
                });
                console.log('new push');
            }
            return cache.get('mydata');
        }
    }
});

function Ctrl($scope, myFactory) {
    myFactory.getData() // new push
    myFactory.getData() // from cache
    myFactory.getData() // from cache
}

Working Demo

于 2013-09-05T15:32:01.117 回答