Stesso problema, lo risolvo con questo trucco, il codice è prolisso e solo un esempio, ottimizzalo!
// 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'));
});
Suppongo che il trucco sia lo stesso per aggiornare anche il titolo.
Se avete una soluzione migliore, fatemelo sapere!
EDIT:
ho continuato indagine,
possiamo vedere il codice 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, il contenuto viene fatta in attr "-contenuto dei dati", o opzioni formulato la prima chiamata (instanciation) del popover.
Ma, in realtà, è probleme, le opzioni vengono memorizzati nella cache e non aggiorna su ogni chiamata, in modo wa devono utilizzare:
$('item_id').attr('data-content', 'some content'); // and warning, it is different than
$('item_id').data('content', 'some content');
E il bootstrap ottenere il modo attr.
Lo stesso per titolo:
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
}
Quindi, la funzione doPopover potrebbe essere: bene
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);
}
lavoro per me.
item.attr ('-contenuto dei dati', contenuto); lavori! Grazie! Usare Bootstrap v2.0.4 – Dean