2012-02-13 3 views
2

Пожалуйста, предложите мне, как решить следующее:Как сопоставить одно свойство с другим с картографированием нокаутом?

я модель определяется как

public class Model 
{ 
    public string Name { get; set;} 
} 

и ViewModel в JS, как

var vm = { 
    name : ko.observable() 
} 

Кроме того, у меня есть обратный вызов, который должен обновить модельный ряд:

function callback(data) 
{ 
    ko.mapping.fromJS(data, {}, viewModel); 
} 

Но для ko.mapping Свойство plugin 'name' не равно 'Name'.

Gents, как определить отображение с 'Name' на 'name'?

ответ

2

Прежде всего, вам не нужно указывать свойство name в viewModel, поскольку плагин сопоставления добавит его для вас.

И для корпуса измените соглашение о сериализации, чтобы ввести строчные значения свойств.

Или вы можете сделать то, что я сделал, и принять прописную букву в вашей модели просмотра. Несмотря на то, что он не слишком хорошо сочетается с общими соглашениями Javascript, я принял его как «свойства, которые приходят с сервера».

Я нашел довольно удобным знать, какие из них созданы из сопоставления и какие из них я использую для просмотра модели. Конечно, вы не увидите сервер сгенерированных/отображенных свойств в вашей модели просмотра, но они будут там.

Я использую это, чтобы указать и создать модели сборок на стороне сервера на сервере, сериализовать их и сопоставить их с моими нокаут-моделями. Таким образом, я могу сосредоточиться только на поведении в моделях с нокаутом.

Если вам нужно преобразовать любой стороне сервера объект в JavaScript «объект», вы можете осуществить это преобразование в объект отображения, как я here

+0

Ok, я вижу. Но могу ли я указать добавление атрибутов для сериализатора JSON для сериализации моих свойств на стороне сервера в соответствии с соглашениями об именах на стороне клиента? –

+1

Вы можете проверить это: http://stackoverflow.com/a/6288726/444118 –

 Смежные вопросы

  • Нет связанных вопросов^_^