【发布时间】:2015-12-01 17:32:51
【问题描述】:
我对 Jquerymetis 菜单有疑问。我想从数据库加载菜单元素,我正在使用 AngujarJS 控制器来获取带有菜单元素的 JSON。
这里是 AngularJSController
var appControllers = angular.module('appControllers', []);
appControllers.controller('MenuCtrl', ['$scope', '$http',
function ($scope, $http) {
var url = "/api/Menus/GetMenuElements";
$http.post(url).
success(function (data, status, headers, config) {
$scope.menuElements = data;
console.log("Success");
}).
error(function (data, status, headers, config) {
console.log("Error");
});
}]);
然后在我的 ASP.NET MVC 项目的 PartialView 中,我有 Angular 指令将元素添加到菜单。
<ul class="nav" id="side-menu">
<li ng-repeat="elementL1 in menuElements" ng-init="menuElements != null">
<a ng-if="elementL1.LINK !== null" href="{{elementL1.LINK}}"><i class="fa fa-home"></i> <span class="nav-label">{{elementL1.NAME}}</span><span class="fa arrow"></span></a>
<a ng-if="elementL1.LINK == null"><i class="fa fa-home"></i> <span class="nav-label">{{elementL1.NAME}}</span> </a>
<ul ng-repeat="elementL2 in elementL1.ChildMenu" ng-if="elementL1.ChildMenu.length > 0" class="nav nav-second-level">
<li class="primerLi">
<a>{{elementL2.NAME}}<span class="fa arrow"></span></a>
<ul ng-if="elementL2.ChildMenu.length > 0" class="nav nav-third-level">
<li ng-repeat="elementL3 in elementL2.ChildMenu">
<a href="{{elementL3.LINK}}">{{elementL3.NAME}}</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
这可以很好地向菜单添加元素,但不能折叠和展开。它似乎展开了,我无法折叠元素。
我认为问题是我必须在加载元素后调用$('#side-menu').metisMenu();,但如果我在浏览器控制台上调用它,它就不起作用。
如何做到这一点?我是 Angular 的新手。在这里我看到了同样的问题,但我无法解决问题。 https://github.com/onokumus/metisMenu/issues/22
编辑
我发现不能多次调用 Metis 菜单。我已经从 onready 事件 JS 中删除了$('#side-menu').metisMenu();,我从浏览器控制台调用了它,它现在可以工作了。
现在我需要帮助在加载菜单元素时使用 angular 调用它。我是 Angular 的新手,需要一些帮助。
【问题讨论】:
-
我已经编辑了我的问题,添加了一些关于该问题的结论。
标签: javascript jquery angularjs asp.net-mvc