问题很简单,可是我网上却始终没有找到方法。
事情是这样的,比如我有个模板类似如此
<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="top" title="Tooltip on top">Tooltip on top</button>
我在模板加载完后要执行脚本如下
$(function(){$('button').tooltip();});
但我在route与controller中均未找到触发模板加载完后的事件,不知道在ember的应用中类似的脚本(在dom都加载完成后)该如何处理,在何处被触发?
经过一天的努力,自己找到了解决方案,但由于对ember不熟悉不保证是最好的解决方案如果你有更好的方案请不吝告知。
问题是这样的项目采用ember+bootstrap的方式,其中用到bootstrap中tooltip的javascript组件,但tooltip组件采用了data-api的方式将数据绑定在html标签中,只能在dom加载进页面后手动触发$.tooltip方法来实现。
我找到的方案是采用在ember中运用view的didInsertElement事件,该事件将在把view中的html加载到文档后触发。
一下是我的部分实现代码:
模板代码
其中用了自定义的TooltipView来包裹需要加载后处理的html代码。
TooltipView的实现代码:
其主要功能是查找带有“data-toggle=tooltip”的html元素并对该元素调用tooltip完成组件初始化工作。