javascript – jquery metismenu无法使用AngularJS控制器加载数据异步
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – jquery metismenu无法使用AngularJS控制器加载数据异步,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2387字,纯文字阅读大概需要4分钟。
内容图文
我有Jquerymetis菜单的问题.我想从Database加载菜单元素,我正在使用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菜单.我删除了$(‘#side-menu’).metisMenu();来自onready事件JS和我从浏览器控制台调用它现在可以工作了.
现在我需要帮助在加载菜单元素时使用angular调用它.我是Angular的新手,我需要一些帮助.
解决方法:
我已经解决了使用Angular Directive在ng-repeat的最后一个元素呈现给DOM时执行metisMenu函数的问题.
app.directive('metis', function ($timeout) {
return function ($scope, $element, $attrs) {
if ($scope.$last == true) {
$timeout(function () {
$('#side-menu').metisMenu();
}, 250)
}
};
});
然后我必须在Ng repeat元素上使用该指令
<li ng-repeat="elementL1 in menuElements" ng-init="menuElements != null" metis="">
您可以在我的问题上看到完整的HTML代码.
我是Angular的新手,所以我不是专家.即使我希望这个解决方案可以帮助某人.
内容总结
以上是互联网集市为您收集整理的javascript – jquery metismenu无法使用AngularJS控制器加载数据异步全部内容,希望文章能够帮你解决javascript – jquery metismenu无法使用AngularJS控制器加载数据异步所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。