knockout.js - knockout - Breeze no genera ko observables
knockoutjs variables (3)
@frenchfraso - Vale la pena conocer algunas mejoras en Breeze desde que escribió su código.
El espacio de nombres entityModel
está en desuso y todo lo que estaba en él se ha elevado a breeze
. El espacio de nombres entityModel
aún funciona ... pero desea deshacerse de él cuando tenga tiempo. Así es como crearía un EntityManager hoy:
var manager = new breeze.EntityManager(serviceName);
Knockout ahora es el adaptador predeterminado "modelLibrary" y Web API es el adaptador predeterminado "dataservice", por lo que ya no tendrá que configurar brisa core.
Eso significa que simplemente puede eliminar cada línea del código en su pregunta :)
Hay una nueva sintaxis para especificar un adaptador Breeze no predeterminado. Aquí hay un ejemplo que configura Breeze para usar la biblioteca del modelo Backbone en lugar de Knockout:
breeze.core.config.initializeAdapterInstances({modelLibrary: "backbone"});
Tengo el siguiente problema con una simple aplicación web MVC4 + ko + breeze: las entidades breeze devueltas por una consulta son objetos javascript simples, sin ko observables. Inspeccioné la muestra de todo (que devuelve correctamente ko observables) y no encontré el lugar donde brisa está configurado para trabajar con ko (y generar observables). Intenté agregar las siguientes líneas, pero nada cambió:
var core = breeze.core;
var entityModel = breeze.entityModel;
core.config.setProperties({
trackingImplementation: entityModel.entityTracking_ko,
remoteAccessImplementation: entityModel.remoteAccess_webApi
});
Gracias de antemano por su amable ayuda
gotcha! el problema estaba en un par de atributos faltantes en el controlador WebApi:
[JsonFormatter, ODataActionFilter]
public class MyController : ApiController
{
// my methods...
}
Después de agregar [JsonFormatter, ODataActionFilter] ¡las entidades devueltas tenían los observables ko esperados!
Mi problema es que he cargado knockout DESPUÉS de la brisa y, por lo tanto, la brisa me devolvió los objetos POJO.
<script src="Scripts/jquery-1.9.1.js"></script>
<script src="Scripts/q.js"></script>
<script src="Scripts/breeze.debug.js"></script>
<script src="Scripts/knockout-2.1.0.debug.js"></script>
<script src="Scripts/toastr.js"></script>
<script src="Scripts/require.js" data-main="App/main"></script>
Después de cambiar la orden de carga, la brisa devolvió los observables KO:
<script src="Scripts/jquery-1.9.1.js"></script>
<script src="Scripts/q.js"></script>
<script src="Scripts/knockout-2.1.0.debug.js"></script>
<script src="Scripts/breeze.debug.js"></script>
<script src="Scripts/toastr.js"></script>
<script src="Scripts/require.js" data-main="App/main"></script>