在 SPA 中,我有一个视图,其中使用 compose 绑定包含另一个视图。该子视图(子视图)有一个 activate 方法,该方法在加载父视图时被调用。
<div data-bind="compose: 'viewmodel/fol/index'"></div>
但是,当我离开父视图然后返回到它(不刷新浏览器)时,子视图中的 activate 方法不再被调用。如何强制在每次加载父视图时调用它?
由于您在这里没有利用路由器,因此子 viewModel 的行为将不尊重完整的激活生命周期。您可以采取两种方法:(a) 利用路由器或 (b) 手动激活子进程。
如果您想采用第一种方法,您可以在 viewModel 上创建一个子路由器并创建一个router
绑定而不是compose
捆绑。在这种情况下这可能有点过分了,所以我会跳过它。
根据您在此处提供的信息,更好的方法是不要尝试自动挂钩激活生命周期。所以不要打电话给你activate()
函数激活,调用它init()
:
function folIndexViewModel() {
this.init = function() {
...
};
}
在你的父级中,让你的激活函数调用 init
var child = require('viewmodel/fol/index');
function parentViewModel() {
this.activate = function() {
child.init();
}
}
请注意,此方法仅适用于您的孩子是单身人士。有关此内容的更多信息,请参阅本文底部:http://durandaljs.com/documentation/Creating-A-Module.html http://durandaljs.com/documentation/Creating-A-Module.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)