Backbone.js でアプリを作成し、gridify を使用して写真をグリッド状に配置しています。問題は、画像が非同期に読み込まれることであり、これがグリッド化の問題を引き起こしているようです。すべての ascyn 呼び出しが終了した後に gridify 関数を呼び出す方法はありますか? 呼び出しをポスト レンダリングに配置しようとしましたが、これは役に立たないようです。これが私のコードです:
TemplateContext では:
var images = [];
this.model.get('images').each(function (imageModel) {
var image = imageModel.toJSON()
images.push(image);
}, this);
return {
images: images,
view:this
}
ポスト レンダー:
var options =
{
srcNode: 'img', // grid items (class, node)
margin: '20px', // margin in pixel, default: 0px
width: '250px', // grid item width in pixel, default: 220px
max_width: '', // dynamic gird item width if specified, (pixel)
resizable: true, // re-layout if window resize
transition: 'all 0.5s ease' // support transition for CSS3, default: all 0.5s ease
}
$('.grid').gridify(options);
そして私のテンプレートでは:
<div id="activity" class = "grid" style="border: 1px solid black;">
{{#if images }}
{{#each images}}
<img src ="?q=myApp/api/get_images&imgId={{id}}&imgSize=medium" >
{{/each}}
{{else}}
No images have been uploaded
{{/if}}
</div>
これにより、すべての画像が互いに積み重ねられます。gridifyが呼び出された後に画像がロードされるという事実のために、gridifyが寸法がどうあるべきかを知らないためだと思います。テンプレートで静止画像を使用するだけであれば、問題なく動作します。バックボーンまたはグリッド化でこれを処理する方法について誰か提案がありますか?
ありがとうジェイソン