Tengo el siguiente problema:

Tengo un observable matriz de objetos en el formato { isSelected: false, Message: "Test1" }, { isSelected: true, Message: "Test2"}. Yo soy de la generación de una lista de selección en la vista de este observable de la matriz. Quiero que el valor de la propiedad isSelected = verdadero para ser 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 este va a ser sencillo, pero soy muy nuevo a octavos de final y yo no era capaz de hacer que funcione como se espera. Cualquier ayuda con el código de trabajo será muy apreciada. Gracias.

OriginalEl autor Mdb | 2012-04-26

1 Comentario

  1. 12

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

    De un observable puede ser enlazado a la opción actualmente seleccionada utilizando el «valor» de unión:

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

    Ahora, sólo tiene que utilizar el objeto con «isSelected == true» como el valor inicial de este observables:

    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/

    OriginalEl autor

Dejar respuesta

Please enter your comment!
Please enter your name here