Tengo el siguiente modelo de vista que contiene una matriz de elementos

   function ReservationsViewModel() {
        var self = this;


        self.availableMeals = [
            { mealName: "Standard (sandwich)", price: 0, id = 1 },
            { mealName: "Premium (lobster)", price: 34.95, id = 2 },
            { mealName: "Ultimate (whole zebra)", price: 290, id = 3 }
        ];  
  }

Quiero enlazar este modelo de vista para una entrada, pero quiero enlazar sólo el Único elemento de la matriz el nombre de la comida que tiene el valor de id como el atributo id de la entrada.

<input type="text" id="firstElementMealName" data-id="1" data-bind="value: ??"></input>

En este ejemplo, se unen a la matriz del elemento con id = 1, y el texto aparecerá como «Estándar (Sandwich)», pero todavía tengo la plena unión y el seguimiento de cambios (observables) y todas las otras cosas buenas en octavos de final.

Cómo recoger los datos-identificación y uso en el código de enlace para vincular la comida apropiada para la entrada?

Gracias de antemano

OriginalEl autor Faris Zacina | 2012-02-01

1 Comentario

  1. 16

    Solución sugerida:

       function ReservationsViewModel() {
            var self = this;
    
    
            self.availableMeals = ko.observableArray([
                { mealName: "Standard (sandwich)", price: 0, id = 1 },
                { mealName: "Premium (lobster)", price: 34.95, id = 2 },
                { mealName: "Ultimate (whole zebra)", price: 290, id = 3 }
            ]);
    
            self.getMealById = function(id) {
                ko.utils.filterArray(self.availableMeals(), function(item) {
                    return item.id == id;
                });
            };
      }

    De la vista:

    <input type="text" id="firstElementMealName" data-bind="value: getMealById(1)"></input>

    EDIT: aquí está una de dos vías de solución:

    function ReservationsViewModel() {
            var self = this;
    
    
        self.availableMeals = ko.observable({            
            id_1: { mealName: "Standard (sandwich)", price: ko.observable(0) },
            id_2: { mealName: "Premium (lobster)", price: ko.observable(34.95) },
            id_3: { mealName: "Ultimate (whole zebra)", price: ko.observable(290) }
            });
      }
    
    ko.applyBindings(new ReservationsViewModel());

    De la Vista:

    <input type="text" id="firstElementMealName" data-bind="value: availableMeals().id_2.price()"></input>
    Funciona en una dirección, pero todavía no consigo el enlace bidireccional. me gustaría que el precio de la pantalla en la entrada, y luego cuando lo cambio me gustaría que el enlace para actualizar automáticamente en el viewmodel?
    Se parece a la getMealById función es la falta de cierre de la operación ‘)’?
    Thanx! Se han fijado que ahora.

    OriginalEl autor

Dejar respuesta

Please enter your comment!
Please enter your name here