<script>
function showData(recId,e)
{
Visualforce.remoting.Manager.invokeAction('{!$RemoteAction.ControllerClass.getPopData}',
recId,"{!record.Id}",
function (result, event) {
if(event.status)
alert(result); //Alerts correct value
$('.li').popover({content:result}); //Holds previous value
}, {buffer:false}
);
}
</script>
Теперь проблема, с которой я сталкиваюсь, заключается в том, что если в списке отображаются 3 элемента, первый из которых я нажимаю, отображаются правильные данные, но при нажатии на любой другой элемент отображаются те же предыдущие данные, пока я не обновлю страницу и не щелкну. Однако в удаленном действии я вижу, что правильные данные извлекаются каждый раз, но на странице всегда отображается первый элемент, который я нажимаю.
Оповещение показывает правильный обновленный контент, но всплывающее окно не устанавливает то же самое в поле.
Я также попробовал способ ниже, который я нашел в одном из ответов, используя setcontent
. Это несколько работает, но мне нужно дважды щелкнуть, чтобы получить правильный контент. При первом нажатии отображается предыдущее значение:
$('.li').popover({
content: 'Loading...'
});
$('.li').attr('data-content', res);
var popover = $('.li').data('popover');
popover.setContent();
popover.$tip.addClass(popover.options.placement);
Любая идея, как я могу это исправить?
Обновлено на основе комментариев. Это почти работает, но когда я щелкаю один за другим элементом, но если я нахожусь и нахожусь на одном и том же элементе, всплывающее окно не отображается, хотя я вижу, что происходит вызов удаленного действия.
<script>
function showPopup(recId,e)
{
var res='';
Visualforce.remoting.Manager.invokeAction('{!$RemoteAction.ControllerClass.getData}',
recId,"{!record.Id}",
function (result, event) {
if(event.status)
res=result;
$('.li').popover("destroy").popover({content:res, placement: "bottom", template: '<div class="popover" style="width:250px; font-size:12px"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
});
},{ buffer: false}
);
}
</script>
content
также может бытьfunction()
, что может быть лучшим вариантом для получения динамического содержимого. - person fnostro   schedule 26.06.2018popover(po_options)
гдеvar po_options = { ... content: function(){ //retrieve data }, ... }
- person fnostro   schedule 26.06.2018show.bs.popover
:$('#myPopover').on('show.bs.popover', function () { // do something… })
- person fnostro   schedule 26.06.2018