здесь у меня есть пример кода, который сказал, что плагин KnockoutJS Mapping автоматически связывает пользовательский интерфейс. здесь кодКак работает плагин MappingJockoutJS
<script src="~/Scripts/knockout.mapping-latest.js"></script>
<script type="text/javascript">
$(function() {
var viewModel = ko.mapping.fromJS(@Html.Raw(Model.ToJson()));
ko.applyBindings(viewModel);
});
</script>
предположим, мой HTML связывание следующим
<p>First name: <strong data-bind="text: firstName"></strong></p>
<p>Last name: <strong data-bind="text: lastName"></strong></p>
и моей стороне сервера модели возвращения JSON как
{fname:Josh;lname:Steve};
так вот мой вопрос, как можно было понять KnockoutJS Mapping плагин что значение fname нужно сопоставить с привязкой к базе данных firstName & lname необходимо сопоставить с databinding lastName?
Я понимаю, что я пытаюсь сказать. так что в этом случае мне будет показано, как можно связать json с html UI через плагин Mapping KnockoutJS.
в этой ситуации нокаутJS Mapping плагин был бы правильным выбором или нет?
мне нужно связать вручную viewmode
как
Имя:
Фамилия:
json as follows var person = {fname:Josh;lname:Steve};
var viewModel = function(person) {
this.firstname= ko.observable(person.fname);
this.lastname= ko.observable(person.lname);
};
ko.applyBindings(new viewModel(person));
Если вы хотите использовать разные имена свойств в своих представлениях типа 'lastname', что у вас есть на сервере' fname', то плагин сопоставления не может вам помочь. Вам нужно вручную выполнить сопоставление, как в вашем втором примере. – nemesv
спасибо ... поэтому, когда плагин сопоставления будет использовать, тогда вид на стороне сервера и вид на стороне клиента должны быть такими же .... я прав? – Thomas
Плагин сопоставления создает viewModel со свойствами с теми же именами, что и модель; если у вас есть только некоторые свойства, что вы хотите иметь разные имена, вы можете расширить viewModel после сопоставления – Matus