Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS动态菜单没有';当项目数量大于;10_Javascript_Angularjs_Html - Fatal编程技术网

Javascript AngularJS动态菜单没有';当项目数量大于;10

Javascript AngularJS动态菜单没有';当项目数量大于;10,javascript,angularjs,html,Javascript,Angularjs,Html,我正在使用MVC项目创建一个简单的AngularJS页面,该页面从数据库表中检索项目并将其显示为动态菜单 只要项目数少于10,列表就可以完美运行 当我试图解决这个问题时,我给出了一个解释,即AngularJS不将数字理解为数字!所以这种比较并不恰当 更具体地说,我有下表: 菜单应列为: Page1 - Page2 - Page3 - Page4 - Page5 - Page6 - Page7 - Page8 - Page9 | | |

我正在使用MVC项目创建一个简单的AngularJS页面,该页面从数据库表中检索项目并将其显示为动态菜单

只要项目数少于10,列表就可以完美运行

当我试图解决这个问题时,我给出了一个解释,即AngularJS不将数字理解为数字!所以这种比较并不恰当

更具体地说,我有下表:

菜单应列为:

Page1 - Page2 - Page3 - Page4 - Page5 - Page6 - Page7 - Page8 - Page9
          |       |
          |       |
          |     Page14
          |     Page15
          |
          |
        Page10 - Page11 - Page12 - Page12
                            |
                            |
                          Page13
但我并没有真正表现出我所期待的

  • Page1下,我有Page13
  • Page13也列在Page2

以下是获取并显示列表的代码:

MVC控制器

namespace MVCAngularDynamicMenu.Controllers
{
public class HomeController : Controller
{
    public ActionResult Index() {
        return View();
    }

    public JsonResult GetSiteMenu()
    {
        using (MyDatabaseEntities dc = new MyDatabaseEntities())
        {
            var menu = dc.SiteMenus.ToList();
            return new JsonResult { Data = menu, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
        }
    }
}
}
var app = angular.module('MyApp', []);
app.controller('menuController', ['$scope', '$http', function ($scope, $http) {
$scope.SiteMenu = [];
$http.get('/home/GetSiteMenu').then(function (response) {
    $scope.SiteMenu = response.data;
}, function (error) {
    alert('Error');
})
}])
JS控制器

namespace MVCAngularDynamicMenu.Controllers
{
public class HomeController : Controller
{
    public ActionResult Index() {
        return View();
    }

    public JsonResult GetSiteMenu()
    {
        using (MyDatabaseEntities dc = new MyDatabaseEntities())
        {
            var menu = dc.SiteMenus.ToList();
            return new JsonResult { Data = menu, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
        }
    }
}
}
var app = angular.module('MyApp', []);
app.controller('menuController', ['$scope', '$http', function ($scope, $http) {
$scope.SiteMenu = [];
$http.get('/home/GetSiteMenu').then(function (response) {
    $scope.SiteMenu = response.data;
}, function (error) {
    alert('Error');
})
}])
视图

<div ng-app="MyApp">
<div ng-controller="menuController">
    <script type="text/ng-template" id="treeMenu">
        <a href="{{menu.Url}}">{{menu.Name}}</a>
        <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">
        <li ng-repeat="menu in SiteMenu | filter:{ParentID : 0}" ng-include="'treeMenu'"></li>
    </ul>

</div>

同样,我怀疑问题在于将ID和PartnerID字段转换为字符串,而它们是int。但我不确定
getsitemunu
中的JSON是什么样子的?标记如何显示子菜单的子菜单?也许第13页列在第12页下面,但它看起来像是同一个垂直下拉列表。呈现的HTML是什么样子的?呈现的HTML在我所附的截图上。我将通过编辑我的帖子来发布JSON文件。这可能是您的过滤器不够严格的问题。在您的视图中,尝试添加strict: