クライアントサイドのJSアプリケーションで、各アイテムを表示するためのテンプレートを読み込む必要があります。ノートであるとしましょう。非同期テンプレートの読み込み - 一度ロードするにはどうすればいいですか?
問題は非同期部分です。テンプレートを一度だけロードできるようにすることはできません。ノートがrender
機能を呼び出すたびにロードされます。ここで
はいくつかのコードです:
var notes = [ {}, {}, {} ] // Some Note objects
notes.forEach(function(note) {
render(note)
}
// Have some variable to hold the template
var template
// Now on the render function
function render(note) {
// First, if the template exists, go straight to the next function
if (template) {
// The display function takes care of appending the note
// to the body after applying datas on the template
display(note)
}
else {
// loadTemplate just loads the template in an ajax request
// and executes the callback with the template as argument
loadTemplate(function(data) {
// I fill in the template variable
template = data
// And I display the note since the template is available
display(note)
})
}
}
したがって、この場合には、それは、これを防ぐために、チェックがあるにもかかわらず、3回のテンプレートをロードします。私はこれが3つのテンプレートが他の人にまっすぐに行くためだと思いますが、どうすればこれを防ぐことができますか?
これはブラウザをフリーズするので、私は同期ajaxの読み込みを使いたくありません。
を編集してください。最後に、少し修正した@ Managuのソリューションを使用しました。
代わりに彼のループを使用しての、私は次のように使用してきた、はるかにエレガント:
while (backlog.length) {
display(backlog.shift())
}
'.lodaTemplate'は読み込むテンプレートをどのように知っていますか? – Esailija
このアプリケーションでは、今のところロードするテンプレートは1つだけです。 –