2012-02-05 41 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