存储JSON加载的数据以供在Controller中使用

时间:2015-11-10 16:10:00

标签: javascript jquery html json angularjs

我一直在努力将使用AngularJS从Json加载的数据存储在我想在另一个控制器上使用以加载另一个json的变量中。'

HTML

<ul bn-delegate="li a | selectNodes(x)">
    <li ng-repeat="x in nodes">
        <!-- Delegate target. -->
        <a href="#">{{x.name}}</a>
        <!-- Delegate target. -->
    </li>
</ul>
<div ng-show="selectedNodes">
    <p>
        You selected: {{selectedNodes.id}} : {{selectedNodes.name}}
        <script>
        </script>
    </p>
    <div ng-app="nodesApp" ng-controller="compsCtrl">
        <li ng-repeat="x in nodes">
            {{x.id}}+ {{x.name}}
        </li>
    </div>
</div>

SCRIPT

<script>
    var app = angular.module('nodesApp', []);
    app.controller('nodesCtrl', function ($scope, $http) {
        $scope.selectNodes = function (nodes) {
            $scope.selectedNodes = nodes;

        };
        $http.get("environments.json")
            .success(function (response) {
                console.log(response.nodes);
                $scope.nodes = response.nodes;
                $scope.selectedNodes = null;
            });
    });

    app.controller('compsCtrl', function ($scope, $http, $routeParams) {
        console.log($scope);
        init();

        function init() {
            $http.get('comps-' + evid + '.json')
                .success(function (response) {
                    console.log(response.nodes);
                    $scope.nodes = response.nodes;
                });
        }
    });

    app.directive(
        "bnDelegate",
        function ($parse) {
            function link($scope, element, attributes) {
                var config = attributes.bnDelegate.split("|");
                if (config.length === 1) {
                    var selector = "a";
                    var expression = config[0];
                }
                else {
                    var selector = config[0];
                    var expression = config[1];
                }
                var expressionHandler = $parse(expression);
                element.on(
                    "click.bnDelegate",
                    selector,
                    function (event) {

                        event.preventDefault();

                        var localScope = $(event.target).scope();

                        localScope.$apply(
                            function () {
                                expressionHandler(localScope);
                            }
                        );
                    }
                );
                $scope.$on(
                    "$destroy",
                    function (event) {
                        element.off("click.bnDelegate");
                    }
                );
            }
            return ({
                link: link,
                restrict: "A"
            });
        }
    );
</script>

我想要做的是获取{{selectedNodes.id}}数据并将其存储在变量中,以便在evs变量中的$ http.get中的compsCtrl中使用。

该指令用于在html部分的ng-show中显示信息,但我似乎无法将其用于我的目的。

0 个答案:

没有答案