Navegación entre páginas Durandal do ko automapping en lugar de pass throw my model
Frecuentes
Visto 283 equipos
0
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);
});
});
}
0 Respuestas
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas knockout.js durandal or haz tu propia pregunta.
¿Puede proporcionar algún código para echar un vistazo? - Muhammad Raheel
Sí, agregué el código javascript de la página de detalles. - Sepu