Navegación entre páginas Durandal do ko automapping en lugar de pass throw my model

Escribo una aplicación con durandal usando knockout y ajax call. Si visito la página de detalles directamente, paso los parámetros a la URL, todo funciona, pero si visito la página desde otra página usando route.navigate Durandal usa el modelo que llega de la solicitud ajax sin pasar de mi modelo, por lo que esto genera muchos errores porque en mi modelo agregué propiedades y acciones. Traté de agregar canReuseForRoute devolviendo falso pero nada cambió.

¿Puedes ayudarme por favor?

Gracias por su atención.

concha js

{ route: 'movimento/:idLista/:id', moduleId: 'viewmodels/movimento', title: 'Movimento', hash: '#movimento/:idLista/:id', nav:false }

maestro js

 self.editMovimento = function (item) {
        router.navigate('movimento/'+ self.id + '/' + item.id());
    }

Detalle js:

define(['plugins/router', 'plugins/dialog', 'knockout', 'komapping', 'moment'], function (router, dialog, ko, mapping, moment) {

MovimentoModel = function (data) {
    var self = this;
    mapping.fromJS(data, {}, self);

    self.availableCategories = ko.observableArray();
    self.availableTipiRipetizioni = ko.observableArray();
    self.IsMovimento = ko.observable(true);
    self.IsRipetizione = ko.observable(false);
    self.IsLog = ko.observable(false);

console.log("Pass here only if I press F5 or I enter directly url in browser.");


}     

return {
    activate: function (idLista, id) {
        var self = this;

        var url = baseApiUrl + 'api/movimento/' + id;

        return $.ajax({
            type: "GET",
            url: url,
            headers: headers,
            dataType: 'json'
        }).done(function (data) {
            self.movimento = new MovimentoModel(data);
            self.movimento.idlista(idLista);

            var idcategoria = self.movimento.idcategoria();
            var idtiporipetizione = self.movimento.idtiporipetizione();


            $.ajax({
                type: "GET",
                url: baseApiUrl + 'api/categoria?idlista=' + idLista,
                headers: headers,
                dataType: 'json'
            }).done(function (data) {
                $.each(data, function (index, obj) {
                    self.movimento.availableCategories.push(obj);
                });
                self.movimento.idcategoria(idcategoria);
            });                
        });
    }

preguntado el 12 de junio de 14 a las 10:06

¿Puede proporcionar algún código para echar un vistazo? -

Sí, agregué el código javascript de la página de detalles. -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.