【问题标题】:RequireJS and Bootstrap (Navbar) DropdownsRequireJS 和 Bootstrap (Navbar) 下拉菜单
【发布时间】:2015-07-30 12:10:05
【问题描述】:
我最近将 Durandal 集成到我的项目中,并且运行良好。但是,我确实遇到了 navbar 中的引导下拉菜单不起作用的问题。我通过添加以下 JavaScript 解决了这个问题:
$(document).ready(function () {
$('a[data-toggle=dropdown').dropdown();
});
我很好奇这是否是预期的解决方案,或者我只是在解决这个问题而忽略了一个潜在的问题。在集成 Durandal 之前,navbar 在没有此代码的情况下运行良好,就像我之前在许多其他项目中所做的一样。
【问题讨论】:
标签:
twitter-bootstrap
twitter-bootstrap-3
requirejs
durandal
【解决方案1】:
Durandal 的方法是将您的小部件设置代码(在本例中为 Bootstrap jQuery)放在模块的 attached 或 compositionComplete 挂钩中。逻辑是 Durandal 不知道您在 UI 中使用了哪些附加小部件,因此您必须告诉它。这些钩子只是为了这个目的而在框架内方便地提供。 Durandal 完成绑定和附加视图后,运行一些自定义代码来美化 UI。这与 $(document).ready() 为 jQuery 所做的概念相同。
// this code assumes that jQuery is loaded globally
define(function(require){
var vm = {
//...
};
vm.attached = function() {
$('a[data-toggle=dropdown').dropdown();
};
return vm;
});
Reference: Interacting with the DOM