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が使用できるjQueryDeferredオブジェクトを返します。キャッシュを追加するには、最初の呼び出しで遅延オブジェクトを保存し、後続の呼び出しで同じオブジェクトを返すことができます。このような:

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 に答える