首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何重用JSON对象

如何重用JSON对象
EN

Stack Overflow用户
提问于 2012-05-20 17:31:47
回答 3查看 2.8K关注 0票数 5

场景:

MVC网页获取具有大量数据的JSON对象。单击按钮(有许多按钮),我想重用这个JSON对象,并选择必需的JSON属性(不向服务器发出请求)。

它是而不是HTML5,所以不能使用浏览器本地存储。目前,我正在全局变量上存储JSON对象并重用它。

是否有任何优雅的选项可用于在客户端存储和重用返回的JSON对象?

EN

回答 3

Stack Overflow用户

发布于 2012-05-20 18:19:03

只需缓存数据。没有必要将JSON存储在全局变量中,我相信您将在MVC应用程序中找到一个位置来对局部变量进行范围设置。您将通过回调为数据实现一个getter函数。通过缓存,它将如下所示:

代码语言:javascript
运行
AI代码解释
复制
var getData = (function(){
    var cache;
    var loading = false;
    var callbacks = [];
    return function(callback) {
        if (typeof cache != "undefined")
            callback(cache);
        else {
            callbacks.push(callback);
            if (!loading) {
                loading = true;
                doSingleHeavyAjaxCall(options, function success(data) {
                    cache = data;
                    for (var cb; cb = callbacks.shift();)
                        cb(cache);
                });
            }
        }
     };
 })();

然后根据需要经常使用getData(function callback(data){...}),它只会触发一个ajax请求。

票数 3
EN

Stack Overflow用户

发布于 2012-05-20 17:59:49

Jakubs答案的另一个选项是创建一个全局变量,您可以在页面上随意更新和检索该变量。

全局变量被附加到窗口对象。,所以只需将其写在您的<head>部分即可。

代码语言:javascript
运行
AI代码解释
复制
<script type="text/javascript">
   window.jsonData = {};
</script>

然后,无论您在哪里检索数据,只需更新该对象。

代码语言:javascript
运行
AI代码解释
复制
<script type="text/javascript">
    $.ajax(..., function(data) {
        window.jsonData = data;
    });
</script>

然后您可以在页面上的代码中随时随地使用它。

代码语言:javascript
运行
AI代码解释
复制
<script type="text/javascript">
    console.dir(jsonData);
</script>
票数 2
EN

Stack Overflow用户

发布于 2012-05-20 17:37:34

您可以将对象存储在某些元素的数据属性中,最好是用于表示数据(表、网格)的页面中的容器:

代码语言:javascript
运行
AI代码解释
复制
var json = {};

$('#mygrid').data('mydata', json);

你可以稍后取回它。

代码语言:javascript
运行
AI代码解释
复制
var json = $('#mygrid').data('mydata')

jQuery data()方法文档:http://api.jquery.com/data/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10678632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档