我有一个容器页面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进行配置。
请帮我解决这个问题。
答案 0 :(得分:0)
如果数据是真正全局的,那么一种方法是创建一个新的AMD / RequireJS模块,然后将其标识为Home.html
和People.html
的ViewModel中的依赖项。然后,让这个共享模块管理数据。我很想将家庭ViewModel中的Ajax调用移到这个新的共享模块中。
使用$root
会在您的观看次数之间创建隐式合约。有些人会说这很难维护,最好通过子视图参数来记录关系。如果数据不是全局数据,但仅在特定视图的两个子视图之间共享,则可以通过参数将数据传递给子视图。您使用的是Knockout组件还是Oracle JET模块?两者都允许您将参数从父视图传递给子ViewModel。