0

ここは完全初心者。ページが読み込まれるとすぐにデータをモデルに読み込みたい。他の何かが実行される前。現時点では、私はこのコードを持っています。

// Model code
var Portfolio = Spine.Model.sub({});
Portfolio.configure("Portfolio")

Portfolio.extend({
  populate: function(values){
    for(var i in values[0]){
     // add attributes to Model
      this.attributes.push(i);
    }
    for(var j = 0; j < values.length; j++ ){
      var tmpInst =  this.create(values[j]);
      tmpInst.save();
    }
  }
});

// app controller code
$(function(){
   var App =Spine.Controller.sub({
    init: function(){
      jQuery.getJSON("../xml/data.json", 
        function(result){ 
             Portfolio.populate(result['content']);
        }
      ).complete(function(result) { 
          // do other stuff
      });
    }
  })
    var app = new App();
});

そのため、ページの読み込みが完了すると、コントローラーinit関数が呼び出され、json データが取得され、解析されて個々のインスタンスが作成されるモデルに渡されます。

私はこれを間違っていますか?ドキュメントで Fetch 関数を見たことがありますが、それがどのように機能するかの例はありません。

4

1 に答える 1

0

これを行うには、Spine のフレームワークを使用することをお勧めします。

  1. 独自の jQuery.getJSON() を起動する代わりに、モデルに Spine.Ajax を含めます。
    Portfolio.extend(Spine.Model.Ajax);
  2. Spine.Model.host をサーバーに設定します
  3. 'xml/data.json' などのポートフォリオ オブジェクトに url 属性/メソッドを追加します。
  4. Portfolio.fetch() を呼び出す
  5. Portfolio.fetch() 関数をオーバーライドして、配列データのノードのみを抽出するか、configure のように念頭に置いていた初期化をすべて抽出します。私が間違っていなければ、 fetch() はオブジェクトをロードし、モデル @configure 呼び出しで構成されていなくても、JSON で提供されるすべての属性を設定します
于 2012-10-19T20:09:24.117 に答える