私はノックアウトとMVC4を使用するプロジェクトに取り組んでいます。ノックアウトデータを入力する動的jqueryダイアログを生成するコードがあります。
$("#manage-pros").click(function () {
$("<div>")
.attr("data-bind", "template: { name: 'pro-template' }")
.dialog({
resizable: false,
modal: true,
title: "Manage Pros",
width: 700,
buttons: [
{
text: "Save Changes",
'data-bind': 'click: saveChanges',
click: function () { }
},
{
text: "Cancel",
click: function () {
$(this).dialog("close");
}
}
],
close: function () {
$(this).dialog("close");
ko.cleanNode($(this));
},
open: function () {
ko.applyBindings(new ProViewModel());
$("input[type=button]").button();
}
});
});
Proテンプレートは次のようになります。
<div class="modal-form" id="pro-template">
<div class="form-element">
<label>Add New Pro</label>
<input data-bind="value: newProText" class="textbox ui-widget-content ui-corner-all" />
<input type="button" data-bind="click: addPro" value="Add Pro" />
</div>
<table style="border-collapse: collapse;" class="ui-widget ui-corner-all">
<tr class="ui-widget-header ui-dialog-header" style="">
<td style="width: 75px; padding: 5px;">Modified</td>
<td style="width: 425px; padding: 5px;">Pro Name</td>
<td style="width: 100px; padding: 5px;"></td>
</tr>
<tbody data-bind="foreach: pros">
<tr>
<td style="text-align: center;">
<span data-bind="fadeVisible: name.hasChanged()"><span class="ui-icon ui-icon-check left-icon"></span></span>
</td>
<td>
<input data-bind="value: name, visible: editingText(), hasfocus: editingText" class="textbox ui-widget-content ui-corner-all" />
<span data-bind="text: name, visible: !editingText(), click: textClick"></span>
</td>
<td>
<a href="#" data-bind="click: $parent.removePro">Delete</a>
</td>
</tr>
</tbody>
</table>
</div>
私が見つけたのは、動的コンテンツがDOMに初めて追加されたときはすべてがうまく機能するということですが、エスケープを押すかダイアログを閉じると、「クリックして編集」機能が機能しません。これをjsfiddleに入れようとしましたが、少し複雑すぎると思います。
誰か考えがありますか?