我是 JMVC 的初学者。我试图弄清楚它是否在从服务器检索模型后将模型存储在任何地方。
例如,模型文档有这个代码片段:
$.Controller("Tasks",
{
init: function() {
Task.findAll({}, this.callback('tasks'));
},
调用是否Task.findall()
将任务列表保存在某个变量中,例如Task.tasks
,还是我需要自己存储它们?
谢谢!
我是 JMVC 的初学者。我试图弄清楚它是否在从服务器检索模型后将模型存储在任何地方。
例如,模型文档有这个代码片段:
$.Controller("Tasks",
{
init: function() {
Task.findAll({}, this.callback('tasks'));
},
调用是否Task.findall()
将任务列表保存在某个变量中,例如Task.tasks
,还是我需要自己存储它们?
谢谢!
不,它似乎没有缓存。
但是,您可以非常简单地缓存您的 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
}
}
我觉得这有点笨拙,但这就是我今天想出的。如果有更优雅的方式,请告诉我。