我正在构建一个简单的 durandal 应用程序。我已经有一些从服务器加载数据的视图模型,它们有点相互依赖。为了使它们保持同步,我想在导航到时重新加载视图模型的数据。我想到的是尝试使用某种导航事件。使用它的最佳方法是什么?
假设我有这种带有视图和内容的视图模型。每次用户导航到页面时,如何让它加载其数据(即调用 loadData 函数)?
define(["knockout", "./repository"], function (ko, repository) {
// Door viewmodel
var list = ko.observableArray();
function loadData() {
// use repository to load the data
// map the data to list array
}
return {
list: list,
loadData: loadData
}
});
我主要关注 Durandal 提供的示例应用程序,并且我的路由器配置基于示例使用的那个。
define(["knockout", "plugins/router"], function(ko, router) {
var childRouter = router.createChildRouter()
.makeRelative({
moduleId: "vm/catalog",
fromParent: true
}).map([
{ route: ["", "door"], moduleId: "door/index", title: "Drzwi", nav: true },
{ route: "doorType", moduleId: "doorType/index", title: "Typy drzwi", nav: true },
{ route: "accessory", moduleId: "accessory/index", title: "Akcesoria", nav: true }
])
.buildNavigationModel();
return {
router: childRouter
}
});
有没有办法在路由器导航到页面时从路由器内部调用函数,或者以某种方式将对象传递给模块本身来管理事件?换句话说,Durandal 中实现导航路由器(生命周期)事件的方式是什么?