JavascriptMVC: он кеширует модели? - PullRequest
1 голос
/ 09 июня 2011

Я начинающий с JMVC.Я пытаюсь выяснить, где хранятся модели в любом месте после их получения с сервера.

Например, Документация по модели имеет следующий фрагмент кода:

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

Сохраняет ли вызов Task.findall() список задач в переменной где-нибудь, например Task.tasks, или мне нужно хранить их самому?

Спасибо!

1 Ответ

2 голосов
/ 19 марта 2012

Нет, это не похоже на кеширование.

Однако вы можете сделать ваш ресурс 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
    }
}

Я нахожу это несколько клёвым, но это то, что я только что придумал сегодня.Если есть более элегантный способ, пожалуйста, дайте мне знать.

...