Я пытаюсь реализовать встроенное редактирование с использованием шаблонов. В моей модели просмотра у меня есть метод: self.changeMode. Я запускаю это из события нажатия кнопки (внутри шаблона). Параметр данных, который передается функции changeMode, содержит ожидаемые данные, но мне нужно изменить наблюдаемое. Как мне это сделать?
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>
mode
? Кроме того,mode
даже не является наблюдаемым в вашей модели просмотра. - person Tomalak   schedule 26.03.2016