在Controller AngularJS中创建函数

时间:2015-07-21 13:46:10

标签: javascript json angularjs

我不知道发生了什么。我在Angular中有一个控制器,我希望将URL与JSON文件中的item.href进行比较,然后我想在获得正确的项目之后从我的JSON文件中检索它。

Angular Contorller:

angular.module('app').controller('appCtrl', ['$scope', '$http', '$rootScope', '$location', function ($scope, $http, $rootScope, $location) {
    $http.get('Items.json').success(function (data) {

        $scope.tmp = data.mainmenu;

        $rootScope.location = $location;

        $scope.hashPath = "#" + $rootScope.location.path().toString();

        var objects = [];

        angular.forEach($scope.tmp, function (mainitem) {
            console.log(mainitem.title);
            objects.push(mainitem);
            angular.forEach(mainitem.menu, function (item) {
                console.log(item.title);
                objects.push(item);
                angular.forEach(item.submenu, function (subitem) {
                    console.log(subitem.title);
                    objects.push(subitem);
                })
            })
        });
        var title = "";
        $scope.setTitle = function () {
            angular.forEach(objects, function (item) {
                if ($scope.hashPath == item.href) {
                    title = item.title;
                }
            })

        };



    });
}]);

JSON

{
    "mainmenu": [
        {
            "id": "main",
            "title": "Main Category",
            "href": "#",
            "menu": [
                { 
                    "id": "menu1",
                    "title": "Menu 1",
                    "href": "#/menu1"
                },
                {
                    "id": "menu2",
                    "title": "Menu 2",
                    "href": "javascript:;"
                    "submenu": [
                        {
                            "id": "submenu2_1",
                            "title": "Submenu 2 1",
                            "href": "#/submenu2_1"
                        },
                        {
                            "id": "submenu2_2",
                            "title": "Submenu 2 2",
                            "href": "#/submenu2_2"
                        },
                        {
                            "id": "submenu2_3",
                            "title": "Submenu 2 3",
                            "href": "#/submenu2_3"
                        }
                    ]
                },
                {
                    "id": "menu3",
                    "title": "Menu 3",
                    "href": "#/menu3"
                },
                {
                    "id": "menu4",
                    "title": "Menu 4",
                    "href": "javascript:;"
                    "submenu": [
                        {
                            "id": "submenu4_1",
                            "title": "Submenu 4 1",
                            "href": "#/submenu4_1"
                        },
                        {
                            "id": "submenu4_2",
                            "title": "Submenu 4 2",
                            "href": "#/submenu4_2"
                        },
                        {
                            "id": "submenu4_3",
                            "title": "Submenu 4 3",
                            "href": "#/submenu4_3"
                        }
                    ]
                }
            ]         
        }
    ]
}

问题在于我的控制器中的这一行:

 $scope.setTitle = function () {
            angular.forEach(objects, function (item) {
                if ($scope.hashPath == item.href) {
                    title = item.title;
                }
            })

        };

我的意思是 - 当我在此函数中设置断点时,它不会进入此函数内部......出了什么问题?

1 个答案:

答案 0 :(得分:2)

除非您在视图中调用setTitle(),否则您实际上从未调用此函数。