2012-02-05 3 views
4

Я - новичок в KnockoutJs, и мне интересно, может ли кто-нибудь помочь в этом.KnockoutJs Наблюдаемые массивы и спаренные списки

У меня есть 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

Большое спасибо, John. Это сработало. Большое спасибо за ваш быстрый ответ. –

+0

Нет проблем. На всякий случай ... обратите внимание, что объекты внутри платформ observableArray не являются наблюдаемыми. Для этого образца это не было необходимо, но если бы вы хотели, чтобы они были наблюдаемыми, вы, вероятно, захотите создать объект конструктора платформы и сделать его свойства наблюдаемыми. Это необходимо, только если вы хотите, чтобы эти свойства имели уведомления об изменении. Дайте мне знать, если вы хотите это увидеть. –