最初のページの読み込みを改善するために、私が作成しているページのコンテンツのほとんどは、必要な場合にのみ読み込まれます。これを行うには、ajax 呼び出しを介して次のコードを使用しています。
$this->renderPartial('_callhistory', array(
'modelCalls'=>$modelCalls,
'fid'=>$fid,
), false, true);
これは正常に機能し、すべてのウィジェットが機能します。メインテーマのデザインに問題が発生していますが、現時点では大きな問題ではありません。
私が抱えている問題は、ビューを更新するために ajax を再度呼び出す必要がある場合があることです。これを行うために、同じパラメーターを使用してまったく同じ ajax 関数を呼び出していますが、2 回目の呼び出しですべてのウィジェット (つまり、TbSelect2 と CJuiDatePicker) が機能しなくなり、代わりに標準の選択と日付のテキスト ボックスが表示されます。これにより、クライアント側の検証が中断されます。
その他の Q&A が言及さ.unbind()
れていますが、これでよいのでしょうか。もしそうなら、ajax 呼び出しの前にすべてのウィジェット要素をバインド解除する必要があると言うのは正しいですか?
ありがとうございます。私の Ajax も投稿しますが、このようなすべての更新を処理することに注意してください。
function renderSectionView(fid, viewid, headerid, panelid, extraparams){
var panel = $('#'+panelid);
panel.html("<img src='images/ajax-loader-bar.gif' class='loadingbar' />");
var param = { 'fid':fid,
'viewid':viewid
};
var url = controller_url_builder('SubViewAjax', param);
var jqxhr = $.post( url, extraparams, function(data) {
panel.html(data);
})
.done(function() {
renderedlist.push(viewid+fid);
})
.fail(function() {
panel.html("<span class='error'>There has been an error, please refresh the page and try again</span>");
})
.always(function() {
scrollToAcc(headerid);
});
}