我正在尝试在小部件中使用 TinyMCE,但它失败了。我认为问题是当“viewAttached”被触发时视图仍然隐藏。似乎 TinyMCE有一个错误/功能(阅读最后一段)并且当目标(textarea)被隐藏(或在隐藏的 div 内)时无法显示。
我通过在 setTimeout 中完成这项工作来让它工作,但它很糟糕。
是否有一个我可以附加到的回调,它在视图被取消隐藏后(转换完成后)被触发?
我找到了一种解决方案:
显式订阅路由器的“isNavigating” observable,并在“isNavigating”值变为 false 时添加 TinyMCE。
仍然:这有闪烁的效果 - 你看到 textarea 然后它被 TinyMCE 取代......但这不是 IMO 的 Durandal 问题。
编辑 1
最后,我认为最好的解决方案(目前......请点击下面的链接查看该主题的主题)是执行 setTimeout(xyz(), 0) - 我已经看到很多人使用这种技术并且它防止闪烁。
https://groups.google.com/forum/?fromgroups#!topic/durandaljs/5NpSwMBnrew
当您使用组合时,Durandal 确实有一个回调 - 您只需将一个具有正确名称的函数放到您的 viewModel 上。在您的情况下,您将使用 viewAttached:
这是文档: http ://durandaljs.com/documentation/Interacting-with-the-DOM/