knockout.js - example - observable array knockout js
Knockout.js mapeo plugin con require.js (3)
Cuando se usa con AMD, el complemento de mapeo exporta su funcionalidad a un objeto separado. Por lo tanto, la funcionalidad se adjuntará a su variable de mapping
y usted llamará a los métodos fuera de ella (como mapping.fromJS
).
Puede elegir establecer ko.mapping
igual a la mapping
en su código, si tiene un código que se basa en ko.mapping
que no puede cambiar.
¿Cuál es la forma estándar de cargar el complemento de mapeo en require.js?
A continuación se encuentra mi config.js (archivo de configuración require.js)
require.config({
// Initialize the application with the main application file.
deps: ["app"],
paths:{
// JavaScript folders.
libs: "lib",
plugins: "lib/plugin",
templates: "../templates",
// Libraries.
jquery: "lib/jquery-1.7.2.min",
underscore: "lib/lodash",
text: ''text'',
order: ''order'',
knockout: "lib/knockout",
knockoutmapping: "lib/plugin/knockout-mapping"
},
shim:{
underscore:{
exports: ''_''
},
knockout:{
deps: ["jquery"],
exports: "knockout"
}
}
}
En mi modelo de vista
define([''knockout'', ''knockoutmapping''], function(ko, mapping) {
}
Sin embargo, la asignación no está vinculada a ko.mapping. Cualquier punteros / sugerencias serían apreciados.
Gracias ravi
En una nota al margen, debido a que está utilizando Lo-Dash , no necesita incluir el "guión bajo" en las opciones de "ajuste" de RequireJS. Lo-Dash tiene soporte AMD incorporado.
Su objeto de configuración puede especificar un conjunto de dependencias y una devolución de llamada donde se puede realizar una configuración / manipulación adicional de la dependencia:
var require = {
paths: {
''knockout'': ''...'',
''mapping'': ''...''
},
// configuration dependencies
deps: [''knockout'', ''mapping''],
// configuration callback
callback: function (ko, mapping) {
ko.mapping = mapping;
}
};
Y cuando incluya sus scripts en el marcado, la configuración debe cargarse antes de requerir:
<script src="/scripts/config.js" />
<script src="/scripts/require.js" />
Ahora, Knockout.js estará disponible con una propiedad ko.mapping
como se desee cuando se use en una definición de módulo.
define([''knockout''], function (ko) {
// ko.mapping is available
});
Tenga en cuenta que este es un ejemplo de configuración abreviado. Se necesitan algunos ajustes para que el plugin de mapeo especifique las exportaciones correctas, pero no recuerde lo que es.