Я использую asp.net mvc с нокаутом для привязки данных. У меня есть три модели просмотра, которые, как показано ниже:В программе, использующей knockout.js с несколькими ViewModels, как узнать, какая конкретная модель просмотра изменяется путем изменения свойства?
function PersonViewModel() {
this.firstName = ko.observable("@Model.FirstName");
this.lastName = ko.observable("@Model.LastName");
}
function ContactViewModel() {
this.homePhone = ko.observable("@Model.HomePhone");
this.mobile = ko.observable("@Model.Mobile");
}
function AddressViewModel() {
this.city = ko.observable("@Model.City");
this.street = ko.observable("@Model.Street");
}
var pvm = new PersonViewModel();
var avm = new AddressViewModel();
var cvm = new ContactViewModel();
var pNode = $("#personal-information").get(0);
var aNode = $("#address-information").get(0);
var cNode = $("#contact-information").get(0);
ko.applyBindings(pvm, pNode);
ko.applyBindings(avm, aNode);
ko.applyBindings(cvm, cNode);
Html, как показано ниже:
<div id="personal-information">
<input data-bind="value: firstName" type="text" >
<input data-bind="value: lastName" type="text" >
</div>
<div id="contact-information">
<input data-bind="value: homePhone" type="text" >
<input data-bind="value: mobile" type="text" >
</div>
<div id="address-information">
<input data-bind="value: city" type="text" >
<input data-bind="value: street" type="text" >
</div>
Значение по умолчанию для этих полей ввода выбирается из 3-х различных таблиц в базе данных. Я хочу редактировать эти значения и обновлять данные в этих таблицах.
Если я изменяю значение входов только в PersonViewModel, я хочу сделать запрос ajax, который будет вызывать запрос на обновление только для таблицы person. И то же самое для адреса и контакта ViewModel. Я знаю, как сделать запрос ajax.
Но моя проблема: использование knockoutJs, как я могу знать, что только те конкретные ViewModels, которые обновляются, чтобы я мог оставить остальное на нем?
Это очень полезно. Спасибо Рафаэлю. Работает над тем, что я хочу делать. Но есть ли способ сделать это, не вызывая подписку (this.update ...) для каждого из наблюдаемых? Простая настройка, позволяющая обрабатывать все сама по себе, а не тот же код для каждого из наблюдаемых, - это то, что я ищу сейчас. – Prabesh
Вы можете использовать вычисленное наблюдение, которое «прослушивает» изменения в нескольких других наблюдаемых, а затем подписывается только на это, вычисленное на наблюдаемый метод обновления - http://stackoverflow.com/a/9278782/1942895 –
Теперь я обнаружил, что эта работа только с , когда я использую