JavascriptMVC:它是否缓存模型?

时间:2011-06-09 10:43:30

标签: javascriptmvc

我是JMVC的初学者。我试图弄清楚它是否会在从服务器检索模型后将模型存储在任何地方。

例如,Model docs有以下代码段:

$.Controller("Tasks",
{
  init: function() {
    Task.findAll({}, this.callback('tasks'));
  },

调用Task.findall()是否在某个变量中保存任务列表,例如Task.tasks,还是我需要自己存储?

谢谢!

1 个答案:

答案 0 :(得分:2)

不,它似乎没有缓存。

但是,您可以非常简单地缓存REST资源。我们假设你有一个像这样的RESTful资源。

$.Model('Example.Models.Example',
{
    findAll: REST_BASEPATH + "/example"
}

现在要进行缓存,首先要使用一些显式的jQuery重新实现该查询:

$.Model('Example.Models.Example',
{
    findAll: function(){
        $.ajax({
            url: REST_BASEPATH + "/example",
            type: 'get',
            dataType: 'json',
        })        
    }
}

现在,findAll函数将返回JMVC能够使用的jQuery Deferred对象。要添加缓存,您可以在第一次调用时存储延迟对象,并在后续调用时返回相同的对象。像这样:

var cache = undefined
$.Model('Example.Models.Example',
{
    findAll: function(){
        if (!cache) {
            cache = $.ajax({
                url: REST_BASEPATH + "/example",
                type: 'get',
                dataType: 'json',
            })
        }
        return cache
    }
}

我觉得这有点笨拙,但这就是我今天想出来的。如果有更优雅的方式,请告诉我。