gpt4 book ai didi

javascript - 如何访问任何 View 模型中的路由器状态 - Oracle JET

转载 作者:行者123 更新时间:2023-11-29 23:58:13 26 4
gpt4 key购买 nike

我已经在 main.js 中定义了根路由器,并且导航代码本身就在那里。在页面上有一个列表,我想从选定的列表项打开 View 页面。我可以通过在 html 页面中使用 $root.router.retreive() 来获取页面上的数据。

如何在相应的 viewModel 中获取该值?

导航代码:

self.gotoPage = function(data, event) 
{
self.router.store(data.id);
self.router.go(event.target.id);
};

绑定(bind)代码:

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 绑定(bind)。

如果您正在 ViewModel 中寻找值,您可以扩展 router.moduleConfig 并将上下文作为 moduleParams 传递。

或者您可以使用 ko.dataFor 使用 HTML 选择器从绑定(bind)上下文中获取数据。

根据评论...

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 });
},

关于javascript - 如何访问任何 View 模型中的路由器状态 - Oracle JET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41242075/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com