Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在';可见';规则已被应用_Javascript_Knockout.js - Fatal编程技术网

Javascript 在';可见';规则已被应用

Javascript 在';可见';规则已被应用,javascript,knockout.js,Javascript,Knockout.js,这里是上下文:我有一个div,它的可见性通过data bind=“visible:theBoolean”链接到一个可观察的布尔值 当布尔值切换到true时,div变为可见,此时我需要触发一个操作(刷新CodeMirror对象,因为CodeMirror在未显示的区域中初始化时无法正确渲染) 我还没有找到在绑定效果完成后调用函数的方法。显然,我可以使用setTimeout,但我希望有更好的方法 谢谢 您需要: knockouttemplate绑定支持afterRender回调(以及许多其他回调) 您

这里是上下文:我有一个div,它的可见性通过
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.
    }
});