jquery metisMenu在ng-include中没有工作

时间:2014-10-13 08:27:07

标签: jquery angularjs jquery-plugins angularjs-ng-include

我想使用 ng-include 来呈现template的侧边栏。该模板需要 jQuery metisMenu插件以获取下拉列表。

问题:当我在部分模板' sidebar.html'中加载以下脚本时,仅限工作

<script src="//cdnjs.cloudflare.com/ajax/libs/metisMenu/1.1.0/metisMenu.js"></script>

<script>$(function() {
    $('#side-menu').metisMenu();
});</script>
当我尝试在index.html
中加载时,

失败

我想在 index.html 中只加载一次插件,因为我也可能在其他部分中需要它。这是工作模型的Plunker,需要在部分内部加载脚本。请注意,在将脚本从 sidebar.html 移动到 index.html 时,下拉菜单会停止工作。

任何帮助将不胜感激。提前谢谢。

4 个答案:

答案 0 :(得分:7)

我有同样的问题。你需要添加metisMenu();在你的主控制器中:

app.controller('mainController', function($scope, Config) {
  $('#side-menu').metisMenu();
});

答案 1 :(得分:2)

它可能无法在index.html上运行,因为当它被解雇时,副菜单还没有出现。这是在AngularJS获得网站部分

之后触发jQuery方法的方法
<script src="//cdnjs.cloudflare.com/ajax/libs/metisMenu/1.1.0/metisMenu.js"></script>

<script>
$(function() {
  var $browser = app.injector().get('$browser');

  $browser.notifyWhenNoOutstandingRequests(function () {
    $('#side-menu').metisMenu();
  });

});
</script>

答案 2 :(得分:2)

在setTimeout函数中添加一个名为$(element).metisMenu()的链接对象,为我修复了它。

Range("R32").Value = Application.WorksheetFunction.Sum(userResponse)

答案 3 :(得分:1)

您可以在ng-include

添加onload回调函数
<div ng-include="'sidebar.html'" onload="loaded()"></div>

并在加载的函数中调用metisMenu函数

app.controller('MainCtrl', function($scope) {
  $scope.name = 'World';

  $scope.loaded = function() {
    $('#side-menu').metisMenu();
}
});

这是Plunker