2012-02-05 47 views
4

我是KnockoutJs的新手,我想知道是否有人可以幫助解決這個問題。KnockoutJs Observable數組和下拉列表

我有一個viewmodel,從Mvc3控制器填充,綁定到一個下拉菜單,這是工作正常。

我有額外的數據存儲在「平臺」observableArray和 我希望這些數據顯示在文本框中,具體取決於下拉列表中的 選定值。

這裏是我到目前爲止的代碼: -

<script type="text/javascript"> 
    $(document).ready(function() { 
     var sampleSubmission = function() { 
      this.selectedPlatform = ko.observable(); 
      this.platforms = ko.observableArray(); 

      this.showSearch = ko.observable(false); 
      this.craftText = ko.observable(); 
      this.showSerialNumber = ko.observable(0); 

      this.selectedPlatform.subscribe(function (platformId) { 





      } .bind(this)); 
     }; 

     var sampleSubmissionViewModel = new sampleSubmission(); 
     ko.applyBindings(sampleSubmissionViewModel); 

     //Load the platforms 
     $.ajax({ 
      url: '@Url.Action("GetPlatforms", "Home")', 
      type: 'GET', 
      success: function (data) { 
       sampleSubmissionViewModel.platforms(data); 
      } 
     }); 
    }); 

</script> 

沒有人有任何想法如何實現這一目標?

在此先感謝。

回答

5

您可以在下拉列表中的值綁定到selectedPlatform,就像這樣:

<select data-bind="options: platforms, value: selectedPlatform, optionsText: 'name'"></select> 

我修改您的代碼並採取了一些最好的猜測你想要做什麼,並創建了一個示例。 這裏是小提琴:http://jsfiddle.net/johnpapa/DVXH7/

+0

非常感謝,約翰。這很有用。非常感謝您的快速回復。 – 2012-02-05 15:29:25

+0

沒問題。以防萬一......請注意,observableArray平臺內部的對象不是可觀察對象。對於這個示例,它不是必需的,但是如果您希望它們是可觀察對象,那麼您可能希望創建一個Platform構造對象並使其屬性成爲可觀察對象。這隻有在您希望這些屬性具有更改通知時纔有必要。讓我知道你是否也想看到。 – 2012-02-05 15:33:14