EDIT - добавление более «реалистичного кода» за комментарий. Целью дизайна является то, что все модели обернуты моделями просмотра, а модель представления действует как прокси-сервер модели. Представление никогда не связывается напрямую с моделью. Кроме того, у меня есть отдельный класс javascript, который отправляет и получает модели на/с сервера, который вводится как зависимость в модели представления.Как автоматически обновить свойство модели из модели просмотра?
Ниже приведено MessageModel
content
- это необработанный контент, который пользователь набрал и/или то, что вернул сервер. MessageViewModel
предоставляет свойство message, которое является форматированной версией свойства модели content
.
function MessageModel(id, content, nick) {
var self = this;
self.nick = nick;
self.content = content;
self.id = id;
}
// view needs to bind to properties that only exist on the view model
function MessageViewModel(messageModel, dataService) {
var self = this;
self.id = ko.observable(messageModel.id);
self.message = ko.computed(function() {
// format the content for the view
return messageModel.nick + " <" + messageModel.content + ">";
});
self.saveMessage(function() {
// send the model up to the server
dataService.saveMessage(self.model);
});
self.model = messageModel;
}
С чем я писал выше, изменения в модель представления должны быть прижаты к модели и при получении моделей с сервера, изменения должны быть прижаты к отразить в модели представления, а затем к просмотру , Как это сделать в нокауте?
Если вы хотите обновить 'messageModel.id' через привязку, то он должен быть« наблюдаемым »; в настоящее время идентификатор viewModel является вашим единственным наблюдаемым – house9
@ house9 - не хотите обновлять модель путем привязки. Хотите обновить модель представления с помощью привязки, а затем обновите модель с помощью модели представления. Нехорошо сочетать модель напрямую с представлением. –
Вы должны показать более реалистичный код. Не имеет смысла создавать объект для хранения 'id', а затем переносить его в другой объект с помощью другого' id', чтобы закончить с двумя зависимыми идентификаторами id. Если 'id' был тем, что вы не знали, я уверен, что у вас будет простая модель просмотра с идентификатором' id'. Поэтому, пожалуйста, сделайте образец более реалистичным, объяснив, почему у вас есть вложенная модель, что вы хотите с ней произойти, когда изменяется идентификатор родителя и т. Д. Можете ли вы улучшить свой вопрос с помощью этой информации? – JotaBe