Ich verwende Bootstrap in meinem MVC-Projekt. Ich habe ein Problem mit dem Bootstrap-Popover-Widget. Ich habe eine benutzerdefinierte Knockout-Bindung für popover Widget erstellt, hier den Code:Wie verändere ich die Größe von Twitter Bootstrap Popover?
ko.bindingHandlers.popover = {
init: function (element, valuesAccessor, allBindingsAccessor, viewModel, bindingContext) {
var options = ko.utils.unwrapObservable(valuesAccessor() || {});
options.html = true;
options.content = '<small class="text-info">' + 'Variable text goes here.Variable text goes here.Variable text goes here.Variable text goes here.Variable text goes here. ' + '</small>';
$(element).popover(options);
},
update: function (element, valuesAccessor, allBindingsAccessor, viewModel, bindingContext) {
var extraOptions = allBindingsAccessor().popoverOptions;
$(element).popover(extraOptions.observable() ? "show" : "hide");
$(element).siblings('.popover').css({ width: '150px' });
//IF YOU UN-COMMENT BELOW 2 LINES THAN EVERY THINGS WORKS FINE
//if(extraOptions.observable())
//$(element).popover('show');
}
};
function vm() {
var self = this;
self.isVisible = ko.observable(false);
self.open = function() {
self.isVisible(!self.isVisible());
};
}
ko.applyBindings(new vm());
Ich möchte mit variabler Textnachricht auf ein beliebiges Element popover initialisieren und mit variabler Größe. Jedes Ding geht in Ordnung, aber wenn ich die Standardbreite des Popover als beim ersten Mal ändern, wenn es geöffnet ist, ist seine Position nicht korrekt (überprüfen Sie bitte das Verhalten in Geige).
Es gab eine Reihe von Code in der Geige, die, wenn Sie als Kommentar dieses Problem lösen. Aber ich denke, es ist ein hacky Ansatz, ich möchte einen besseren Weg, wenn es welche gibt?
Ich habe das aber Popover div ist nicht vor der Initialisierung vorhanden, so Änderungen keine Wirkung – user1740381
Ich versuche, eine Demo zu bieten, aber ich bin mir nicht sicher, worauf Sie Ihre Breitenanpassung basieren. Es scheint willkürlich. Warum nicht einfach die Breite mit CSS einstellen? – isherwood