使用AngularJS实现从数据库数据创建动态菜单非常简单
假设我们的数据库中有一个用于导航菜单的表,例如,
动态菜单的表结构
编写以下代码以从数据库中获取菜单
public JsonResult GetSiteMenu()
{
using (MyDatabaseEntities dc = new MyDatabaseEntities())
{
var menu = dc.SiteMenus.ToList();
return new JsonResult { Data = menu, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
}
这是 angularjs 控制器
var app = angular.module('MyApp', []);
app.controller('menuController', ['$scope', '$http', function ($scope, $http) {
$scope.SiteMenu = [];
$http.get('/home/GetSiteMenu').then(function (data) {
$scope.SiteMenu = data.data;
}, function (error) {
alert('Error');
})
}])
HTML 代码
<div ng-app="MyApp">
<div ng-controller="menuController">
@* Here first of all we will create a ng-template *@
<script type="text/ng-template" id="treeMenu">
<a href="{{menu.Url}}">{{menu.Name}}</a>
@* We will create submenu only when available *@
<ul ng-if="(SiteMenu | filter:{ParentID : menu.ID}).length > 0">
<li ng-repeat="menu in SiteMenu | filter:{ParentID : menu.ID}" ng-include="'treeMenu'"></li>
</ul>
</script>
<ul class="main-navigation">
@* Here we will load only top level menu *@
<li ng-repeat="menu in SiteMenu | filter:{ParentID : 0}" ng-include="'treeMenu'"></li>
</ul>
</div>
</div>