Mismo problema, lo resuelvo con este truco, el código es detallado y solo un ejemplo, ¡optimícelo!
// functions container
var doc =
{
doPopover : function(item_id, title, content)
{
// get jq item
var item = $('#' + item_id);
// the trick to "refresh content" in every call
item.attr('data-content', content);
// popover
item.popover(
{
title : title,
trigger : 'manual'
}).popover('show');
},
popoverFirstCall : function()
{
this.doPopover('myDiv', 'Title', 'MyContent1');
},
popoverSecondCall : function()
{
var content = 'xxx'; // get the content in Ajax
this.doPopover('myDiv', 'Title', content);
}
}
// call funcs in your views
$(document).ready(function()
{
// first popover with first content
doc.popoverFirstCall();
// this event wich call the ajax content and refresh popover.
$('#button').on('click', $.proxy(doc, 'popoverSecondCall'));
});
Supongo que el truco es el mismo para actualizar el título también.
Si tiene una mejor solución, por favor dígame!
EDIT:
continué investigación,
podemos ver en código del plugin:
getContent: function() {
var content
, $e = this.$element
, o = this.options
content = $e.attr('data-content')
|| (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
return content
}
modo, el contenido se toma en attr "datos de contenido", o sobre las opciones dadas en la primera llamada (instanciación) de popover.
Pero, en realidad, es probleme, las opciones están en caché y no actualiza en cada llamada, por lo que tienen que utilizar wa:
$('item_id').attr('data-content', 'some content'); // and warning, it is different than
$('item_id').data('content', 'some content');
Y Bootstrap obtener la forma attr.
Lo mismo para el título:
getTitle: function() {
var title
, $e = this.$element
, o = this.options
title = $e.attr('data-original-title')
|| (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
return title
}
Por lo tanto, la función doPopover podrían ser: bien
doPopover : function(item_id, title, content)
{
// get jq item
var item = $('#' + item_id);
// the trick to "refresh content" in every call
item.attr('data-content', content); // do not use data() way.
item.attr('data-original-title', title);
// popover (trace first call if you want)
item.popover(
{
trigger : 'manual'
});
item.popover('show);
}
trabajo para mí.
item.attr ('datos de contenido', contenido); ¡trabajos! ¡Gracias! Usando Bootstrap v2.0.4 – Dean