RPNiemeyer の kendo-knockout ライブラリを使用しています。onclick で JavaScript オブジェクトをインスタンス化し、そのオブジェクトに div をバインドしてポップアップ ウィンドウを開くボタンがあります。右上隅にある x ボタンからウィンドウを閉じると (画像をインポートしていないため、フィドルで正しく視覚化されません)、バインディングが壊れ、ボタンでウィンドウが再び開きません。これが私のhtmlです:
<button onclick="openPopUp()">OpenPopUp</button>
<div id="productionStates" class="hidden">
<div data-bind="kendoWindow: { isOpen: isOpen, title:'States', center:true, width: 600, height: 150, modal: true, resizable: false, actions: ['Maximize', 'Close'] }" >
<fieldset>
<legend>Change state:</legend>
<table>
<tr data-bind="foreach: productionStates">
<td><button class="k-button" data-bind="value: ProductionState, text: ProductionState" /></td>
</tr>
</table>
</fieldset>
</div>
</div>
JavaScript:
var ProductionStatesList = function() {
var
self = this;
ProductionStatesList.prototype.productionStates =
ko.observableArray([ { ProductionState: ko.observable("Pending") } ]);
ProductionStatesList.prototype.openPopUp = function () {
self.isOpen(true);
};
ProductionStatesList.prototype.isOpen = ko.observable(false);
ProductionStatesList.prototype.openPopUp = function () {
self.isOpen(true);
};
ProductionStatesList.prototype.close = function () {
self.isOpen(false);
}
};
var elementIsBound = function (elementId) {
return !!ko.dataFor(document.getElementById(elementId));
};
var openPopUp = function(){
var productionStatesList = new ProductionStatesList();
if (!elementIsBound("productionStates")){
ko.applyBindings(productionStatesList, document.getElementById("productionStates"));
}
productionStatesList.openPopUp();
}
jsfiddle のコードは次のとおりです: http://jsfiddle.net/5Zkyg/40/
再現する手順:
1. ボタンをクリックします。ポップアップウィンドウが開きます。
2. 右上の画像からウィンドウを閉じます (画像がインポートされていないため、x ボタンは表示されません)。
これが機能しない理由を説明してください。解決策があれば大歓迎です。ありがとう!