$(document).ready()
DoT.js を使用して JSON を HTML に配置する関数を定義しています。
$(document).ready(function() {
function arrangeResults(jsonObject, templateFunc) {
$(jsonObject).each(function(i, item) {
$.each(item, function(i2, item2) {
$('#ajax-article-list .col-left').append( templateFunc(item2) );
});
});
};
この関数を実行してデータを表示するページ読み込み時に AJAX 呼び出しがあります。
$.post(ajaxRequestURL, function(data) {
arrangeResults(ajaxData.pages, projectTemplate);
}
これはうまくいきます。
click()
ただし、返されたデータで再度実行する必要があるハンドラーを使用して、より多くの/異なる JSON データを要求する一連のリンクがありますarrangeResults
が、関数は実行されません。
$('nav.filters a').click(function(ev) {
ev.preventDefault();
$.post(ajaxRequestURL, function(data) {
ajaxData = parseJSON(data);
arrangeResults(ajaxData.pages, projectTemplate);
}
}
これはうまくいきません。データはすべて有効であり、コンテンツを取得しarrangeResults
てスクリプト内に直接配置するとすべてが機能しますが、DRY に従い、ページロード時とフィルターの 1 つが使用されている場合の両方で呼び出すことができる外部関数を持つことを望んでいました。クリックしました。
AJAX呼び出しが非同期であるためだと思いますが、関数呼び出しが内部success
にあるため、これは問題にはならないと思いました。