2015-11-14 5 views
9

Ich habe den folgenden Code:Aurelia wählen Anfangswert

javascript:

export class App { 
    values = [ 
    {id: 0, text:'Text 1'}, 
    {id: 1, text:'Text 2'}, 
    {id: 2, text:'Text 3'} 
    ]; 

    obj = { 
    selected: 2 
    }; 
} 

html:

<template> 
    <select value.bind="obj.selected"> 
    <option repeat.for="option of values" value="${option.id}">${option.text}</option> 
    </select> 
</template> 

Das Problem ist, dass der Anfangswert der select ist nicht die dritte Beste Option wie erwartet.

Was muss ich tun, damit es richtig funktioniert?

Plunk example

+2

@blm - Ich glaube nicht, dass meine Frage ein Duplikat der eine ist, die Sie verlinkt haben ... –

Antwort

10

Die id Eigenschaft ist vom Typ Zahl, so dass Sie sicher, dass „Wert“ der jeweiligen Option Elemente machen wollen werden auch vom Typ Zahl ist. Das bedeutet, dass Sie keine String-Interpolationsbindung (z. B. ${...}) verwenden möchten, da diese den Quellwert immer in eine Zeichenfolge konvertiert. Sie möchten auch nicht das value Attribut des Optionselements verwenden, um den Wert zu speichern, da dieses Attribut nur Zeichenfolgen akzeptiert. Verwenden Sie stattdessen die model-Eigenschaft, die eine spezielle Eigenschaft ist, die das Bindungssystem von aurelia versteht und jeden Typ speichern kann. Diese Arten von Szenarien werden in der Dokumentation here diskutiert.

TLDR:

<option repeat.for="option of values" model.bind="option.id">${option.text}</option> 
+0

Die aktuelle Seite Aurelia doc: Ihre Option Element dieser Bindung ändern für auserwählt ist hier: http://aurelia.io/hub.html#/doc/article/aurelia/binding/latest/binding-selects/1 :) –