我的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菜单不能被多次调用。我已经$('#side- menu').metisMenu();
从就绪事件JS中删除了,并从浏览器控制台中对其进行了调用,现在它可以工作了。
现在,当菜单元素加载时,我需要帮助使用angular对其进行调用。我是Angular的新手,我需要一些帮助。
当ng-repeat的最后一个元素呈现到DOM时,我已经使用Angular Directive来执行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的新手,所以我不是专家。即使我希望此解决方案可以帮助某人。
问题内容: 我有一个现有页面,需要在其中添加一个可以动态加载的控制器的角度应用程序。 这是一个片段,它根据API和我发现的一些相关问题实现了关于如何完成操作的最佳猜测: JSFiddle。请注意,这是对实际事件链的简化,在以上各行之间有各种异步调用和用户输入。 当我尝试运行上述代码时,由$ compile返回的链接器将抛出:。如果我正确地理解了引导程序,那么它返回的注射器应该知道该模块,对吗? 相
问题内容: 我在Angular中有一个服务,该服务使用我的API来获取用户信息并将其提供给控制器。设置如下: 在我的控制器中,我将其包含为: 这不会返回任何数据,而如果我将相同的服务功能放在控制器本身中,它将返回正确的值。我在这里想念什么?以前从未在Angular中使用过DI / Services,因此在某个地方可能是一个简单的错误。 我需要确保该服务在控制器加载 之前 返回数据。如何做到这一点
问题内容: 我正在尝试通过AngularJS将URL动态加载到iframe中。由于某种原因,我无法像这个小提琴那样显示。有人可以告诉我我在做什么错吗?为什么不能绑定到控制器中设置的URL?代码很小: 谢谢! 问题答案: 您的代码无法正常工作的原因是因为源不受信任。为了使来源受到信任,您需要使用本文推荐的服务。如果这样做,您将得到以下结果: HTML 控制者 请参阅更新的小提琴:http : //j
试图将$http.post请求从AngularJS表单发送到Symfony控制器以将表单内容添加到数据库。我可以在AngularJS侧获得"状态"200的成功响应。 但是,在Symfony控制器上,$request- 另外,安装了FOSRestBundle并启用了body listener、param fetcher listener。 我知道我的问题与AngularJS对Symfony控制器的P
问题内容: 我目前有一个内置路由的AngularJS应用,它与静态属性分配完美配合。但是我真正想做的是为控制器分配不同的路由: 我想做的是在这里对我的财产做同样的事情,例如: 但似乎我得到一个错误,说找不到 所以有什么办法可以在路由配置中动态加载控制器功能名称? 问题答案: 使用angular ui-router可以做到这一点。 ui-router允许您指定“ controllerProvider
问题内容: 在这种简化的情况下,我有两个文件:index.htm,lazy.htm。 index.htm: 懒汉 结果是一个错误:“参数’lazy’不是一个函数,未定义” 改用函数 懒汉 直到1.3版本beta 14才可以使用。在beta 15中,删除了全局控制器功能:https : //github.com/angular/angular.js/issues/8296 因此,现在,有什么更好的方