【问题标题】:KnockoutJS templates and Twitter Bootstrap/JQuery tooltip not workingKnockoutJS 模板和 Twitter Bootstrap/JQuery 工具提示不起作用
【发布时间】:2012-04-14 23:59:44
【问题描述】:

我有一个 sn-p,它在 onload 中加载 Twitter Bootstrap 工具提示和弹出框,如下所示:

$('i[rel=tooltip]').tooltip({
    placement: "left"
});

在我添加 KnockoutJS 模板之前,这适用于静态 HTML(为简洁起见,省略了一些代码):

<div class="row-fluid" data-bind="foreach: events.slice(paginationStart, paginationStop())">
    ...
    <li>
        <i class="icon-calendar" rel="tooltip" data-original-title="Date"></i> <span data-bind="text: start">event.date</span>
    </li>
    ...
</div>

然后工具提示根本不显示。我已经尝试过匿名和普通的 KnockoutJS 模板

我想我明白发生了什么:KnockoutJS 模板正在覆盖 Twitter Bootstrap 初始化,因为模板是在导入 Twitter Bootstrap JS 文件后在加载时运行的。但我不知道该怎么办。我确实尝试将 JQuery 的东西放在 ko.applyBindings 之后,但这也没有用。

【问题讨论】:

  • 嗯...看来我可能正在寻找 afterRender 属性。我试试看。
  • 发布您的发现/解决方案作为答案并批准它以结束问题,这样它将在未来帮助更多人。

标签: jquery knockout.js twitter-bootstrap templating


【解决方案1】:

写完这个问题后我很快就明白了,不敢相信我错过了。答案是在 KnockoutJS tempating 的 afterRender 回调中做 Twitter Bootstrap Javascript Plugin/JQuery 的东西。

示例:将属性更改为 data-bind="template: { foreach: data, afterRender: bootstrapDecorate }" 并让 bootstrapDecorate 成为淘汰模型中的可调用函数,您可以在其中运行之前在 body.onload 函数中的任何初始化设置。

【讨论】:

  • 延长淘汰赛非常棒且简单。
  • 根据文档,建议使用自定义绑定而不是afterRender。请参阅注释 #7 中的注释 - knockoutjs.com/documentation/…
  • 可能是现在,但你注意到这篇文章已经有一年多了?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
相关资源
最近更新 更多