你怎么知道Durandal何时完成交换意见?

时间:2014-04-29 16:35:47

标签: durandal-2.0

我需要在切换到视图后执行操作。

第一次切换到视图时,激活'然后' compositionComplete'被称为。

之后只有'激活'被称为。

似乎'激活'在视图完成显示之前调用,这导致了我使用的JavaScript控件(Bing Maps V7)的问题。

我一直在使用Hooking Lifecycle Callbacks作为参考,但似乎没有合适的回调来加入。

是否有其他事件或方法我可以用来判断DOM何时更改为视图?

2 个答案:

答案 0 :(得分:1)

听起来好像你的模块是单例而不是实例。真的吗?如果您创建基于实例的模块,则每次激活模块时都会重新创建该模块。这将导致compositionComplete重新执行。

activate处理程序适用于准备最终将在视图中显示的数据。 compositionComplete最适合处理依赖于完全构建的DOM的事项。

我们也使用Bing Maps AJAX v7,并且我总是把它放在基于实例的模块中。

要创建基于实例的模块,如果您不熟悉,请确保您的viewmodel返回构造函数而不是对象文字。

答案 1 :(得分:0)

您是否尝试将Bing初始化置于附加?或者为它创建自定义绑定?我使用的任何第三方库将始终在附加中初始化,如果它想要使用多次,我或者为它创建自定义绑定或创建一个小部件。