我使用knockout和ajax调用使用durandal编写应用程序。 如果我访问详细页面直接将参数传递给url所有工作,但如果我使用route.navigate从另一个页面访问页面Durandal使用从ajax请求到达的模型而不从我的模型传递所以这会产生很多错误,因为在我的模型中我添加了属性和动作。 我试图添加canReuseForRoute返回false但没有任何改变。
请帮帮我吗?
谢谢。
shell js
{ route: 'movimento/:idLista/:id', moduleId: 'viewmodels/movimento', title: 'Movimento', hash: '#movimento/:idLista/:id', nav:false }
掌握杰斯
self.editMovimento = function (item) {
router.navigate('movimento/'+ self.id + '/' + item.id());
}
详情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);
});
});
}