私は初めてknockout.js(v2.2.1)を使用しており、ビューモデルの「IsReadOnly」プロパティに基づいて要素がテキストフィールドと入力フィールドを切り替えるテーブルを作成しようとしています。これは、テーブルセル内のスパンタグと入力タグに「表示」を使用して実現されます。
表は次のとおりです。
<table>
<tr>
<td colspan="2">
<button id="btnEditSave" data-bind="text: btnEditSave, click: doEditSave" style="float:right;" />
</td>
</tr>
<tr>
<td>Server Name: </td>
<td>
<span data-bind="text: Server.ServerName, visible: IsReadOnly() == true" />
<input data-bind="value: Server.ServerName, visible: IsReadOnly() == false" maxlength="50" style="width:400px;" />
</td>
</tr>
</table>
およびモデル:
var ServerViewModel = function () {
// Data
var self = this;
self.IsReadOnly = ko.observable(true); // the form's input mode
self.btnEditSave = ko.observable("Edit"); // the Edit/Save button text
self.Server = ko.observable({}); // the Server object
// Operations
self.doEditSave = function () {
var flag = self.IsReadOnly();
if (flag) {
// switch to Edit mode
self.btnEditSave("Save");
self.IsReadOnly(false);
}
else {
// will eventually save the form data here...
// switch back to readOnly
self.btnEditSave("Edit");
self.IsReadOnly(true);
}
}
}
入力フィールドが表示されないことを除いて、すべてが期待どおりに切り替わります。入力タグの「可視」表現のさまざまな形式を試しましたが、何も機能しません。私は何が欠けていますか?