초기 페이지로드를 향상시키기 위해 필자가 작성하는 페이지의 대부분의 컨텐츠는 필요한 경우에만로드됩니다. 이렇게하려면 아약스 호출을 통해 다음 코드를 사용하고 있습니다.Yii & Bootstrap 위젯이 두 번째 Ajax 이후 작동하지 않습니다.
$this->renderPartial('_callhistory', array(
'modelCalls'=>$modelCalls,
'fid'=>$fid,
), false, true);
위젯 모두 작동합니다. 그것은 메인 테마의 디자인에 문제를 일으키고 있지만, 현시점에서 중요한 이슈는 아닙니다.
내가 아는 문제는보기를 업데이트하기 위해 다시 호출해야 할 때가 있습니다. 이렇게하려면 동일한 매개 변수를 사용하여 똑같은 Ajax 함수를 호출하지만 두 번째 호출에서는 모든 위젯 (즉 : TbSelect2 및 CJuiDatePicker)이 작동을 멈추고 대신 표준 선택과 날짜에 대한 텍스트 상자를 얻습니다. 이렇게하면 클라이언트 측 유효성 검사가 중단됩니다.
기타 Q & .unbind()
처럼이 방법이 있습니까? 그렇다면 모든 위젯 요소가 아약스 호출 전에 바인딩 해제되어야한다고 말하는 것이 맞습니까?
고마워, 나는 내 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);
});
}