Javascript 在';可见';规则已被应用
这里是上下文:我有一个div,它的可见性通过Javascript 在';可见';规则已被应用,javascript,knockout.js,Javascript,Knockout.js,这里是上下文:我有一个div,它的可见性通过data bind=“visible:theBoolean”链接到一个可观察的布尔值 当布尔值切换到true时,div变为可见,此时我需要触发一个操作(刷新CodeMirror对象,因为CodeMirror在未显示的区域中初始化时无法正确渲染) 我还没有找到在绑定效果完成后调用函数的方法。显然,我可以使用setTimeout,但我希望有更好的方法 谢谢 您需要: knockouttemplate绑定支持afterRender回调(以及许多其他回调) 您
data bind=“visible:theBoolean”
链接到一个可观察的布尔值
当布尔值切换到true
时,div变为可见,此时我需要触发一个操作(刷新CodeMirror对象,因为CodeMirror在未显示的区域中初始化时无法正确渲染)
我还没有找到在绑定效果完成后调用函数的方法。显然,我可以使用setTimeout
,但我希望有更好的方法
谢谢 您需要:
knockout
template
绑定支持afterRender
回调(以及许多其他回调)
您可能希望将视图包装在模板中,以便访问afterRender
回调
事实上,knockout
foreach
binding在内部使用template
binding来支持这些回调。如果我这样做,这里执行的代码将在div可见之前触发。我需要在observable的效果(即设置div visible)完成后执行代码。然后我建议将其设置为短超时。是的,这就是我提到的使用setTimeout的选项。谢谢你的贡献!谢谢你的建议。另外一个技巧是使用“if”而不是“visible”来控制可见性,因此每次显示模板时都会触发“afterRender”事件。
myViewModel.theBoolean.subscribe(function(newValue) {
if(newValue){ // (Or `newValue === true`, to check if it's not just truthy)
// The boolean changed to `true`! Do something here.
}
});