Cuando ‘crear’ opción se utiliza en octavos de final de asignación íbamos a hacer la matriz de un observable de la matriz.
Pero, ¿cómo podemos hacer que las propiedades de cada objeto en la observación de la matriz de un observable ?

En este ejemplo a partir de los octavos de final de la documentación, los niños de la matriz se realiza un observable de la matriz, pero quiero hacer que todos los elementos como el id, el nombre de cada objeto literal también a ser un observable. ¿Cómo podemos lograr que. Sólo hay que poner un ko.observable en cada newed objeto de crear el bloque ?

var data = {
    name: 'Graham',
    children: [
        { id : 1, name : 'Lisa' }
    ]
};

//Your custom data model
var myChildModel = function (data) {
    this.id = data.id;
    this.name = data.name;
};

var mapping = {
    'children': {
        create: function(options) {
            return new myChildModel(options.data);
        }
    }
};

var viewModel = ko.mapping.fromJS(data, mapping);

OriginalEl autor Varunkumar Manohar | 2014-08-29

3 Comentarios

  1. 1

    Por el documentación:

    • Todas las propiedades de un objeto se convierte en un observable.

    Por lo tanto, en la sección sobre la Personalización de la construcción de objetos uso de «crear» que los estados

    De curso, dentro de la crear de devolución de llamada que usted puede hacer otra llamada a
    ko.la cartografía.fromJS si usted desea.

    El ejemplo que se ofrece es la siguiente:

    var myChildModel = function(data) {
      ko.mapping.fromJS(data, {}, this);
    
      this.nameLength = ko.computed(function() {
        return this.name().length;
      }, this);
    }

    Naturalmente, esto podría convertir todas las propiedades. De configuración más detalladas a continuación, podría ser aplicado específicamente a que la asignación de llamadas para manejar los requisitos personalizados.

    OriginalEl autor Origineil

  2. 1

    La respuesta rápida es hacer que las propiedades de los objetos observables

    var myChildModel = function (data) {
        this.id = ko.observable(data.id);
        this.name = ko.observable(data.name);
    ;

    Es también, probablemente, la forma más fácil, aunque hay otros

    OriginalEl autor theDarse

  3. 1

    Simplemente:

    var viewModel = ko.mapping.fromJS(data);

    Lo hace todo, hacer ambas propiedades y matrices observable. El segundo parámetro de este método es sólo para el propósito de personalización. Usted no tiene que utilizar si usted no necesita!

    OriginalEl autor Luo Jiong Hui

Dejar respuesta

Please enter your comment!
Please enter your name here