テンプレートを使用してインライン編集を実装しようとしています。私のビューモデルでは、私はメソッドを持っています:self.changeMode。私はボタンのクリックイベント(テンプレート内)からこれをトリガーしています。 changeMode関数に渡されるデータパラメータには期待されるデータがありますが、私はobservableを変更する必要があります。これはどうすればいいですか?ノックアウト子供に観察可能な値を設定するには
var MyViewModel = function (data) {
var self = this;
self.managingAgentId = ko.observable(data.managingAgentId);
self.companyName = ko.observable(data.companyName);
self.companyNumber = ko.observable(data.companyNumber);
self.isActive = ko.observable(data.isActive);
self.agents = ko.observableArray(data.agents);
// Change to Edit or Display mode
self.changeMode = function (data,event) {
event.preventDefault();
// => need to change mode here!
};
}
$(function() {
$.ajax({
type: "GET",
url: ma.Urls.LoadManagingAgent
}).done(function (result) {
$.each(result.agents, function (index, element) {
element.mode = "display";
});
ko.applyBindings(new MyViewModel(result));
}).error(function (response) {
addMessage(response);
});
});
<script type="text/html" id="display">
<td data-bind="text: managingAgentMemberId"></td>
<td data-bind="text: applicationUser.userName"></td>
<td data-bind="text: applicationUser.email"></td>
<td data-bind="text: applicationUser.emailConfirmed"></td>
<td data-bind="text: isActive"></td>
<td>
<button class="btn btn-success btn-sm" data-bind="click:$root.changeMode">
<i class="fa fa-edit"></i>
Edit
</button>
</td>
</script>
<script type="text/html" id="edit">
<td data-bind="text: managingAgentMemberId"></td>
<td data-bind="text: applicationUser.userName"></td>
<td data-bind="text: applicationUser.email"></td>
<td data-bind="text: applicationUser.emailConfirmed"></td>
<td><input type="checkbox" data-bind="checked: isActive" /> </td>
<td>
<button class="btn btn-success btn-sm kout-update">
<i class="fa fa-save"></i>
Update
</button>
<button class="btn btn-danger btn-sm kout-cancel">
<i class="fa fa-stop"></i>
Cancel
</button>
</td>
</script>
あなたは何を意味するのかわかりません。 applyBindingsが返されたajaxで呼び出されていますか? – Greg
コメントを書いてから約5秒後にコメントを削除しました。削除が表示されるまで少し遅れているようです。 – Tomalak
'mode'を何に変更したいですか?また、 'mode'はあなたのビューモデルでは観測できません。 – Tomalak