2016-06-24 5 views
0

Ich bin drängen gefilterten Werte von Titel und Id meiner getItem Array:Option mit Titel und id

 self.selectItem = ko.computed(function() { 
     return ko.utils.arrayFilter(self.loanItems(), function(item) { 
      if (item.Location() == self.userLocation() && item.LoanItem() == self.selectedLoanType() && item.Status() == "Available") { 
       self.getItem.push(item.Title(), item.Id()); 
       } 
      }); 
     }); 

Dann in meiner Ansicht, die ich meine Auswahl-Eingang auffüllen möchten, wählen Sie für I Titel angezeigt werden soll und Id als Wert:

<select data-bind="options: getItem, 
        optionsText: 'Title', 
        optionsValue: 'Id', 
        optionsCaption: 'Select an item...', 
        value: selectedLoanTitle"> 
</select> 

Oben funktioniert nicht, siehe Bildschirm unten.

Result

+0

Bitte zeigen Sie Ihr View-Modell. Sie müssen sehen, wie Sie getItem gesetzt haben –

Antwort

0

Im options Daten-bind Eingabe einer (beobachtbar) Array von Elementen. Die Datenbindungen optionsText und optionsValue beziehen sich auf Eigenschaftsnamen in jedem dieser Elemente.

Die Art und Weise Sie Ihre Daten-bind strukturiert haben erfordert für die getItem Array-Elemente zu haben, sowohl mit einem Id und Title Eigenschaft.

In Ihrer selectItem Methode rufen Sie push mit zwei Parametern, die ich vermute, ist, wo es schief geht. Sie schieben zwei (vermeintlich) Zeichenfolgen in das Array.

Versuchen schieben entweder:

  1. Der ganze Artikel (self.getItem.push(item)) oder
  2. Ein Objekt mit den gewünschten Eigenschaften (self.getItem.push({ Title: item.Title, Id: item.Id }))

Beachten Sie auch, dass selectedLoanTitle wird ein Id am Ende mit Eigenschaftswert, nicht die Title ...

+0

Vielen Dank, Option 2 ist genau das, was ich brauchte. –