我在Durandal中有一个具有函数viewAttached()
的ViewModel。
根据the docs,应该在视图附加到DOM之后调用它。
在我的函数中,我有一个jQuery选择器,用于连接View中的元素:
function viewAttached() {
console.log( $("#myViewId").length );
}
大多数时候我正确地将“1”打印到控制台,但可能有10%的时间我得到0.视图尚未实际附加到DOM。
还有其他人有这个问题吗?
答案 0 :(得分:1)
viewAttached
获取作为参数传入的生成的DOM子树。
所以你可以将代码更改为行
function viewAttached(view) {
console.log( $(view).length );
}
如果你想用jQuery或
包装整个视图function viewAttached(view) {
console.log( $(view).find('mySubSelector').length );
}
如果您需要使用某些特定的子树元素。
答案 1 :(得分:0)
有几点需要注意:
viewAttached在当前模块的视图附加到它的直接父级之后触发,这不一定是在它附加到DOM时。在某些情况下,这是一个明显的限制。对于Durandal 2.0,我们正在添加一个名为documentAttached的附加回调,当所有内容附加到页面的dom时会触发。
viewAttached传递当前模块的视图。您应该使用它来为您编写的任何jQuery代码提供上下文。