我正在做一个durandal / 微风项目。
我需要在我的激活函数中执行几件事。感谢promises
我能够链接异步操作。请注意,我仍然是所有这些事情的初学者,所以不要犹豫,纠正我的代码。
我的 viewModel 中有以下激活功能:
var activate = function (routeData) {
initLookups()
var idTran = parseInt(routeData.idTran);
var idItin = parseInt(routeData.idItin);
return datacontext.getTransportById(idTran, transport)
.then(function () { return datacontext.getItineraryById(idItin, itinerary); });
}
所以在返回语句中:
我填写了
transport
可观察的感谢getTransportById
然后我填写
itinerary
observable 感谢getItineraryById
-
到现在为止还挺好。此代码按预期工作并完成工作(可能未优化)。现在我需要在这两个操作之间插入一个条件,以创建一个新实体(如果 idItin==-1)。在这种情况下,将创建一个新实体。我尝试使用下面的代码,但它不起作用:我的意思是promise
似乎没有在这里完成他的工作,因此无需等待异步操作完成即可显示视图。
var activate = function (routeData) {
initLookups()
var idTran = parseInt(routeData.idTran);
var idItin = parseInt(routeData.idItin);
return datacontext.getTransportById(idTran, transport)
.then(function () { if (idItin == -1) return datacontext.createItineraryDetailTransport(idTran); })
.then(function () { return datacontext.getItineraryById(idItin, itinerary); });
}
以下是数据上下文的createItineraryDetailTransport
功能:
var createItineraryDetailTransport = function (idTransport) {
var initialValues = ({
transportId: idTransport
});
var newItinerary = manager.createEntity(entityNames.itinerary, initialValues);
return manager.addEntity(newItinerary);
}
那么有人知道如何编码这个东西吗?