Angular - 2依赖菜单绑定

时间:2014-04-15 20:23:55

标签: angularjs

我建立了一个ASP.Net MVC 4 +角度网站, 我有一个上方菜单,点击一个链接将相应打开左侧菜单链接。 假设您单击第一个类别(1)上部菜单,左侧菜单将相应地显示1.1,1.2,1.3。

目前,我的上层菜单是绑定的,但是当点击链接(类别)时,左侧菜单上没有任何内容。 如果我发出警报,我会看到数据回到客户端。这不是数据问题。

任何想法的人? :-)

我的index.html包含2个部分:

<html>
    <head>

        <script src="Scripts/angular.min.js"></script>

        <script src="app/controllers/menuController.js"></script>
        <title></title>
    </head>
    <body ng-app="generalApp">
        <div ng-include="'partials/topMenu.html'"></div>
        <div ng-include="'partials/sideMenu.html'"></div>

    </body>
</html>

我的上层菜单(不同的html文件 - 工作):

    <div ng-controller="menuController">
        <table>
            <tr ng-repeat="category in menuCategories">
                <td>
                    <a href="#" ng-click="loadSideMenu('7')">
                        {{category.CategoryName}}
                    </a>                        
                </td>
            </tr>
        </table>
    </div>

我的侧边菜单(不同的html文件):

   <div ng-controller="menuController">
        <table>
            <tr ng-repeat="category in sideMenu">
                <td>{{ category.CategoryName }}</td>
            </tr>
        </table>
    </div>

我的js控制器代码:

(function (angular) {
    var generalApp = angular.module('generalApp', [])
        .controller('menuController', function ($scope, $http) {
            $http.post("Home/GetArticleCategories").then(function (response) {
                $scope.menuCategories = response.data;
            });
        $scope.loadSideMenu = function(category) {
            $http.post("Home/GetSideMenu?a="+category).then(function (response) {
                $scope.sideMenu = response.data;
            });
        };
    });

}(angular));

我的mvc控制器在点击类别时返回伪造的链接:

public JsonResult GetSideMenu(int a)
        {
            var j = Json(new[]{
                    new { CategoryName = "link 1"},
                    new { CategoryName = "link 2"}
                }
            );
            return j;
        }

感谢任何想法!!!

1 个答案:

答案 0 :(得分:0)

您必须将upper and left menus放在同一ng-contoller内。你做每个div的方式都有不同的 $ scope 。当您填充upper menu中的数据时,upper menu中的 $ scope 将保留列表,左侧不会注意到,因为它们有不同的 $范围

认为它们是同一种对象,但不同的实例!