2011-01-13 25 views
0

爲了演示的目的,我正在編寫一個項目跟蹤應用程序。項目有任務,人員等,每個人都有相關的屬性,如標題和描述。挖空映射不讓我訪問屬性

我創建了一個選擇列表,並期望它被填充每個項目的標題屬性。相反,它正在填充一個函數的文本。我認爲這是因爲標題是可觀察的。但我不知道我怎麼能索要價值...

這裏是不正確填充HTML:

<select data-bind="options: projects, 
    optionsText: 'title', 
    optionsValue: 'id', 
    value: selectedList.id()"> 
</select> 

這裏是包含在JSON的JavaScript(它使用注射JSON.Net在ASP.Net MVC中)。格式應該是相同的,儘管我試圖消毒它,所以請原諒任何丟失的括號。

<script type="text/javascript"> 
    var initialData = [ 
    { 
     "id": "2150980c-1033-4b20-a58b-9e5400abb651", 
     "title": "project1", 
     "description": "project 1 description", 
     "persons": [ 
     { 
      "id": "1f6f531c-bafa-4fe8-aac8-9e5400abb65a", 
      "firstname": "p1_fname" 
     }, 
     { 
      "id": "1f6f531c-bafa-4fe8-aac8-9e5400abb65a", 
      "firstname": "p1_fname" 
     }], 
     "tasks": [ 
     { 
      "id": "1f6f531c-bafa-4fe8-aac8-9e5400abb65a", 
      "title": "task1" 
     }, 
     { 
      "id": "1f6f531c-bafa-4fe8-aac8-9e5400abb65a", 
      "title": "task2" 
     }] 
    }, 
    { 
     "id": "54d4dc7c-0928-4c05-93a2-9e5400abb6a0", 
     "title": "project2", 
     "description": "project 2 description", 
     "persons": [ 
     { 
      "id": "1f6f531c-bafa-4fe8-aac8-9e5400abb65a", 
      "firstname": "p1_fname" 
     }, 
     { 
      "id": "1f6f531c-bafa-4fe8-aac8-9e5400abb65a", 
      "firstname": "p1_fname" 
     }], 
     "tasks": [] 
    } 
    ]; 

    var viewModel = { 
     projects: ko.mapping.fromJS(initialData) 
    }; 

    viewModel.selectedList = { 
     id: ko.observable("") 
    }; 

    if(viewModel.projects().length > 0) 
     viewModel.selectedList.id(viewModel.projects()[0].id()); 

    ko.applyBindings(viewModel); 

</script> 

編輯:

綠色是正確的。代碼很好。我沒有提供足夠的信息。我使用映射插件0.5使用Knockout 1.1.1。這是造成問題的原因。 Knockout目前在v1.1.2上。當我升級到1.1.2時,它工作。好抓住綠色。我應該先在小提琴中檢查它。

注意:目前看起來沒有任何文檔指出要求使用1.1.2。

回答