2016-10-14 5 views
1

バックボーンJSモデルの使用に問題があります:item.get(element index)。私は1248のラインアイテムを持つスプレッドシートを持っているので、同じコードを1248回繰り返して、すべてのデータを取り込む必要はありません。このコードを連結してすべての要素インデックスを1つのイベントにすることはできますか?バックボーンJSとの要素インデックスの連結.getモデルイベント

コード:

function showInfo(cameras) { 
     var camera_view = new CameraView({ model: cameras.get(1) }); 

     $("#content").append(camera_view.render().el); 

     var camera_view = new CameraView({ model: cameras.get(2) }); 

     $("#content").append(camera_view.render().el); 

     var camera_view = new CameraView({ model: cameras.get(3) }); 

     $("#content").append(camera_view.render().el); 

     etc.....all the way to 1248 
     } 

イム「バックエンド」でGoogleスプレッドシートからデータを取得するためにbackboneJStabletopJSでの作業。 ありがとう

+0

に操作を減らすために1回のショットで注入? – FrankerZ

+0

はい、バックボーンでコレクションを使用できます。 underscore.js各メソッドを使用してコレクションからすべてのオブジェクトを1つずつ取り出してレンダリングします。 – Mahi

+0

https://www.youtube.com/watch?v=eCYlcpfIXckこちらの動画は役に立ちます – Mahi

答えて

1

_.eachループを使用してコレクションを反復し、各モデルのリスト項目をレンダリングすることをお勧めします。また

function showInfo(cameras) { 
    var cameraView; 

    cameras.each(function(model) { 
    camera_view = new CameraView({ 
     model: model 
    }); 
    $("#content").append(camera_view.render().el); 
    }); 
} 

あなたが1200のビューに近いレンダリングしようとしているので、あなたはすべての単一の反復でHTMLを注入するDOMを操作します。代わりに別の変数にHTMLを保存し、あなたがループするための単純なを試してみましたDOM

function showInfo(cameras) { 
    var cameraView; 
    var $content = $("#content"); 
    var html = ''; 

    $content.empty(); 

    cameras.each(function(model) { 
    camera_view = new CameraView({ 
     model: model 
    }); 
    html += camera_view.render().el 
    }); 
    $content.append(html); 
} 
+0

例1がうまくいくようです!手伝ってくれてどうもありがとう! – jazzninja

関連する問題