我一直在努力将使用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中显示信息,但我似乎无法将其用于我的目的。