2012-04-26 23 views
7

tengo el siguiente problema:predefinir el valor seleccionado en la lista desplegable

que tienen una gran variedad de objetos observables en el formato { isSelected: false, Message: "Test1" }, { isSelected: true, Message: "Test2"}. Estoy generando una lista de selección en la vista desde esta matriz observable. Quiero que el valor con la propiedad isSelected = true sea preseleccionado (que será: Mensaje: "Test2" en este ejemplo). Aquí está mi código:

Knockout:

function ViewModel() 
{ 

    this.DummyOptions = ko.observableArray([{ isSelected: false, Message: "Test1" }, { isSelected: true, Message: "Test2"}]); 
    this.selectedValue = ko.observable(); 
} 

ko.applyBindings(new ViewModel()); 

HTML:

<div> 
Dummy 
<select id="dummy" data-bind="options: DummyOptions, optionsText: 'Message'"></select> 
</div> 

violín: http://jsfiddle.net/PsyComa/RfWVP/52/

Creo que esto sea simple pero soy muy nuevo en octavos de final y yo estaba no puede hacer que funcione como se esperaba Cualquier ayuda con el código de trabajo será muy apreciada. Gracias.

Respuesta

10

Tienes razón, esto es de hecho muy simple con knockout.js.

Un observable se pueden unir a la opción seleccionada actualmente usando el "valor" de unión:

<select data-bind="options: DummyOptions, 
        optionsText: 'Message', 
        value: selectedValue"></select> 

Ahora, sólo utiliza el objeto con "isSelected == true" como el valor inicial de este observable:

function ViewModel() { 
    this.DummyOptions = ko.observableArray([...]); 

    // Filter the array to find the first element with isSelected == true 
    var selectedOption = ko.utils.arrayFirst(this.DummyOptions(), function(item) { 
     return item.isSelected; 
    }); 

    // Use this option as the initial value 
    this.selectedValue = ko.observable(selectedOption); 
} 

http://jsfiddle.net/RfWVP/54/

+0

gracias. Justo lo que necesitaba. – Mdb

Cuestiones relacionadas