2013-02-26 1 views
1

Так что у меня ViewModel как это:Как убедиться, что свойство получает отображается в наблюдаемом

public class ViewModel{ 
    // Constructors, other properties 
    public List<ItemViewModel> Items { get; set; } 
    public ItemViewModel SelectedItem {get;set;} 

    public void InitializeViewModel(){ 
     //Case 1: 
     SelectedItem = null; 
     //Case 2: 
     SelectedItem = Item.FirstOrDefault(); 

    } 
} 

В моем cshtml я следующее:

var viewModel = ko.mapping.fromJS(@Html.Raw(Model.ToJson())); 

Что я замечаю с этим что ko.mapping.fromJS связывает Корпус 1 как наблюдаемый. Однако, когда Установлен случай 2, ko.mapping.fromJS не отображает SelectedItem как наблюдаемый.

Как настроить мой код так, чтобы Case2 был реализован, а ko.mapping.fromJS отображает свойство SelectedItem?

Вот ломка Код: https://skydrive.live.com/redir?resid=33048714B5BF3B4B!1261

ответ

2

В вашем случае, ko.mapping будет отображать свойства ItemViewModel на наблюдаемых, но не ItemViewModel себя. Если вы хотите сделать ItemViewModel получить карту можно определить отображение как:

var mapping = { 
      'SelectedItem': { 
       create: function (options) { 
        return ko.observable(options.data); 
       } 
      } 

И называют преобразование Js:

var viewModel = ko.mapping.fromJS(@Html.Raw(Model.ToJson()), mapping); 
+0

вар отображение = { 'SelectedItem': {... сделал это. Спасибо, что это прекрасно. – jmogera

+0

ya только что обновлено до 'SelectedItem', моя опечатка ... –

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

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