2011-06-09 47 views
1

我是JMVC的排名初學者。我試圖弄清楚它是否在從服務器檢索到的任何地方存儲模型。JavascriptMVC:是否緩存模型?

例如,Model docs有這樣的代碼片段:

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

是否調用Task.findall()保存的任務列表中的某個變量,像Task.tasks,或者我需要將它們存儲在自己?

謝謝!

回答

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函數會返回一個jQuery遞延對象JMVC能夠使用。要添加緩存,可以在第一次調用時存儲延遲對象,並在隨後的調用中返回相同的對象。像這樣:

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

我覺得這有點奇怪,但這就是我今天剛剛想到的。如果有更優雅的方式,請讓我知道。