0

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

请帮助我。

4

1 回答 1

0

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

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

于 2016-06-25T03:59:48.387 回答