Navigation Durandal-我可以有一个总是在绑定完成后被调用的函数吗?

Navigation Durandal-我可以有一个总是在绑定完成后被调用的函数吗?,navigation,single-page-application,durandal,Navigation,Single Page Application,Durandal,我正在做一个水疗中心,它是用和Bootstrap构建的。我们最近开始尝试添加以处理较小的屏幕。Tapdrop会自动将不适合第一行的任何项目推入下拉列表 我通过添加$('.nav tabs').tabdrop()使我们的应用程序正常工作到任何具有选项卡的viewmodel中的附加函数。这很管用,但很笨重。(只有attached()起作用,activate()太早,那么tabdrop就不起作用了。) 所以,这让我想知道:有没有一种方法可以插入这个函数,让它总是在attached()之前或之后被直接调

我正在做一个水疗中心,它是用和Bootstrap构建的。我们最近开始尝试添加以处理较小的屏幕。Tapdrop会自动将不适合第一行的任何项目推入下拉列表

我通过添加
$('.nav tabs').tabdrop()使我们的应用程序正常工作到任何具有选项卡的viewmodel中的附加函数。这很管用,但很笨重。(只有attached()起作用,activate()太早,那么tabdrop就不起作用了。)


所以,这让我想知道:有没有一种方法可以插入这个函数,让它总是在attached()之前或之后被直接调用?

attached
之后是
compositionComplete
。您可以将DOM访问器移动到那里

但是
$('.nav tabs').tabdrop()
不是基于Durandal的方法。假设
compositionComplete
处理程序工作正常,它将如下所示:

compositionComplete = function (view, parent) {
    $(view).find('.nav-tabs').tabdrop();
}
这种方法将DOM上的搜索限制在参与合成的视图上。您可以使用附加的
处理程序以相同的方式进行约束,因为视图也在那里公开

一种更优雅的方法是编写一个定制的敲除绑定


激活太早的原因是DOM在那时没有完全构建。

是的。在activator生命周期中,可以触发许多回调:

激活() Composition&Activator允许新对象执行自定义激活逻辑

绑定() 组合在数据绑定发生之前立即通知新对象

bindingComplete() 组合在数据绑定发生后立即通知新对象

已附加() 当新对象的视图附加到其父DOM节点时,Composition会通知该对象

合成完成() 合成在它参与的合成完成时通知新对象

有关更多信息,请参见此处的文档: