Confusión del complemento de mapeo JS Knockout
-
27-10-2019 - |
Pregunta
Estoy confundido en cuanto a cuándo y dónde debo declarar mi Modelo ViewModel al usar el complemento de mapeo.
Aquí está mi archivo json:
{
"members": [
{
"memberid": "001",
"membername": "Jason"
},
{
"memberid": "002",
"membername": "Bob"
}
]
}
Aquí está la plantilla HTML:
<div data-bind="foreach: members">
<h3 data-bind="text: memberid"></h3>
<p>Name: <span data-bind="text: membername"></span></p>
</div>
Aquí está el resto:
var data = $.getJSON("members.json",function(data)
{
var viewModel = ko.mapping.fromJSON(data);
ko.applyBindings(viewModel);
}
);
ko.mapping.fromJSON(data, viewModel);
¡Gracias de antemano por su ayuda!
Solución
Es probable que desee declarar su Modelo ViewModel fuera del cierre, por lo que es más accesible. Por ejemplo:
var viewModel = {};
var data = $.getJSON("members.json",function(data)
{
viewModel.model = ko.mapping.fromJSON(data);
ko.applyBindings(viewModel);
}
);
Esto crearía el Modelo View, lo haría accesible y expondría la propiedad del modelo (que contendría todos los datos asignados). Podrías omitir la propiedad del modelo y simplemente hacerlo en la VM también. Incluso podría mover las aplicaciones fuera de esto, ya que realmente solo desea que eso se ejecute una vez.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow