我正在使用RPNiemeyer的kendo-knockout库.我有一个kendo窗口,我在html中这样使用:
<div data-bind="kendoWindow: { isOpen: isOpen,title:'States',width: 600,height: 150,modal: true,resizable: false,actions: ['Maximize','Close'] }" > </div>
我曾经把对话框放在这样的中心:
$('#productionStates').data("kendoWindow").center();
但是,由于中心是一种方法,我无法将其传递给像这个中心的标记:true.在kendo-knockout文档中,有一些小部件的属性小部件,我的猜测是这是关键,但我不知道如何使用它,因为没有例子.任何想法都将受到欢迎.谢谢!
解决方法
当您需要以提供的绑定选项不支持的方式与窗口小部件交互时,将使用窗口小部件参数.通常情况下,这是最后的手段,但在这种情况下,它看起来是正确的选择.
你所做的是将一个observable传递给widget参数,它将填充实际的widget.然后,您可以从视图模型中调用方法.
就像是:
var viewmodel = function() { this.isOpen = ko.observable(false); //center it if it is opened this.isOpen.subscribe(function(newValue) { if (newValue) { this.myWidget().center(); } },this); //hold the widget this.myWidget = ko.observable(); };
然后,在标记中:
<div data-bind="kendoWindow: { isOpen: isOpen,visible: false,widget: myWidget }"> ... </div>