如何访问任何视图模型中的路由器状态 - Oracle JET
How to access router states in any of the viewModels - Oracle JET
我已经在 main.js 中定义了根路由器,并且导航代码本身就在那里。在页面上有一个列表,我想从选定的列表项打开视图页面。我可以通过在 html 页面中使用 $root.router.retreive() 来获取页面上的数据。
如何在相应的 viewModel 中获取该值?
导航代码:
self.gotoPage = function(data, event)
{
self.router.store(data.id);
self.router.go(event.target.id);
};
绑定代码:
oj.Router.sync().then(
function () {
// bind your ViewModel for the content of the whole page body.
ko.applyBindings(new RootViewModel(), document.getElementById('globalBody'));
},
function (error) {
oj.Logger.error('Error in root start: ' + error.message);
}
);
您始终可以使用 $module
访问活动 viewModel 中定义的任何变量。
示例:$module.router.retreive()
用于 HTML 绑定。
如果您要在 ViewModel 中查找值,您可以扩展 router.moduleConfig
并将上下文作为 moduleParams
传递。
或者您可以使用 ko.dataFor
通过 HTML 选择器从绑定上下文中获取数据。
根据评论...
setup: function(routerParent) {
var router, latestState;
if (routerParent == undefined) {
router = oj.Router.rootInstance;
} else {
if (routerParent.getChildRouter(routerParent.currentState().id)) {
routerParent.getChildRouter(routerParent.currentState().id).dispose();
}
router = routerParent.createChildRouter(routerParent.currentState().id);
}
router.configure(function(stateId) {
if (stateId) {
latestState = stateId;
return new oj.RouterState(stateId);
}
});
oj.Router.sync().then(function(value) {
//console.info("Calling Router Sync: Result = " + value);
}, function(reason) {
console.info("Calling Router Sync: Result = " + reason);
});
return $.extend(router, { latestState: latestState });
},
我已经在 main.js 中定义了根路由器,并且导航代码本身就在那里。在页面上有一个列表,我想从选定的列表项打开视图页面。我可以通过在 html 页面中使用 $root.router.retreive() 来获取页面上的数据。
如何在相应的 viewModel 中获取该值?
导航代码:
self.gotoPage = function(data, event)
{
self.router.store(data.id);
self.router.go(event.target.id);
};
绑定代码:
oj.Router.sync().then(
function () {
// bind your ViewModel for the content of the whole page body.
ko.applyBindings(new RootViewModel(), document.getElementById('globalBody'));
},
function (error) {
oj.Logger.error('Error in root start: ' + error.message);
}
);
您始终可以使用 $module
访问活动 viewModel 中定义的任何变量。
示例:$module.router.retreive()
用于 HTML 绑定。
如果您要在 ViewModel 中查找值,您可以扩展 router.moduleConfig
并将上下文作为 moduleParams
传递。
或者您可以使用 ko.dataFor
通过 HTML 选择器从绑定上下文中获取数据。
根据评论...
setup: function(routerParent) {
var router, latestState;
if (routerParent == undefined) {
router = oj.Router.rootInstance;
} else {
if (routerParent.getChildRouter(routerParent.currentState().id)) {
routerParent.getChildRouter(routerParent.currentState().id).dispose();
}
router = routerParent.createChildRouter(routerParent.currentState().id);
}
router.configure(function(stateId) {
if (stateId) {
latestState = stateId;
return new oj.RouterState(stateId);
}
});
oj.Router.sync().then(function(value) {
//console.info("Calling Router Sync: Result = " + value);
}, function(reason) {
console.info("Calling Router Sync: Result = " + reason);
});
return $.extend(router, { latestState: latestState });
},