我在我的 mvc 项目中使用引导程序。我对引导弹出窗口小部件有疑问。我为弹出窗口小部件创建了一个自定义敲除绑定,这里的代码:
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());
我想在具有可变文本消息和可变大小的任何元素上初始化弹出框。一切正常,但是当我更改弹出框的默认宽度而不是第一次打开时,它的位置不正确(请检查小提琴中的行为)。
小提琴中有一些代码行,如果您取消注释,则可以解决此问题。但我觉得这是一种 hacky 方法,如果有的话,我想要一些更好的方法来处理?