如何在整个应用程序中维护KnockoutJs中的全局变量?

How to maintain global variables in KnockoutJs throughout the application?

我有一个容器页面 Index.html(这可以被视为母版页),我在其中加载不同的页面 Home.html、people.html 并且每个页面都有自己的视图模型js 文件(Home.js、people.js)。我从 Home.html 导航到 People.html。在 Home.js 中,我进行了一个 Ajax 调用,当我转到 People.html 页面时,我需要它在 People.js 中获取的数据。我试过使用 PublishOn 和 SubscribeTo 但没有得到结果,我试过在 main.js 中创建一个变量并考虑在 Home.js 和 people.js 中使用它,我能够访问它通过使用 $root。但我只能在 Html 页面中执行此操作,而不能在 Js 中执行此操作。 希望我清楚我的问题陈述。 **注意:**我也在使用 RequireJs 进行配置。

请帮我解决这个问题。

如果数据确实是全局的,一种方法是创建一个新的 AMD/RequireJS 模块,然后将其标识为 Home.htmlPeople.html 的 ViewModel 中的依赖项。然后让这个共享模块管理数据。我很想将 Home 的 ViewModel 中的 Ajax 调用移动到这个新的共享模块中。

使用 $root 在您的视图之间创建隐式契约。有人会说这很难维护,最好通过子视图参数来记录关系。如果数据不是全局的,而只是在特定视图的两个子视图之间共享,那么可以通过参数将数据传递给子视图。您使用的是 Knockout 组件还是 Oracle JET 模块?两者都允许您将参数从父视图传递到子视图模型。