1

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

例如,模型文档有这个代码片段:

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

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

谢谢!

4

1 回答 1

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
    }
}

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

于 2012-03-19T13:14:59.733 回答