我有一个显示我的软件组名称的基本控制器:
var SoftwareGroupApp = angular.module('SoftwareGroupApp', []);
SoftwareGroupApp.controller('SoftwareGroupController', function($scope, $http) {
$http.get("select_SoftwareGroup.php")
.then(function (response) {$scope.result = response.data.records;});
});
在我看来,我在列表中显示此软件组
<ul class="sub-menu">
<div ng-app="SoftwareGroupApp" ng-controller="SoftwareGroupController">
<li ng-repeat="x in result"><a class="haschild" title="" href="">{{ x.GroupName }}</a>
<ul>
<div ng-controller="SoftwareController">
<li ng-repeat="x in names"><a title="" href="">{{ x.name }}</a></li>
</div>
</ul>
</li>
</div>
</ul>
我有另一个显示我的软件名称的控制器:
var SoftwareApp = angular.module('SoftwareApp', []);
SoftwareApp.controller('SoftwareController', function($scope, $http) {
$http.get("selectSoftware.php")
.then(function (response) {$scope.names = response.data.records;});
});
当有人点击软件组名称时,我有另一个列出我的软件名称的子菜单。
<ul>
<div ng-controller="SoftwareController">
<li ng-repeat="x in names"><a title="" href="">{{ x.name }}</a></li>
</div>
</ul>
我尝试做的是当有人点击软件组名称时,我的软件组ID保存在变量中并发送到我的SoftwareController。我显示== id
的软件名称答案 0 :(得分:2)
我建议您使用$ rootScope.broadcast进行此类操作。要非常简短,你可以像这样使用广播。 我想要发送数据的控制器就像这样写:
$rootScope.$broadcast("yourFuction", data);
在接收器控制器中获取如下数据:
$rootScope.$on("yourFuction", function(data){
//do something
});
检查以获取更多信息:https://docs.angularjs.org/api/ng/type/$rootScope.Scope
感谢。
答案 1 :(得分:1)
您最好的解决方案是使用uirouter而不是ng-controller,并将ID作为状态参数传递。
另一种选择是使用组件而不是ng-controller,您可以将参数传递给。
答案 2 :(得分:1)
有很多方法。我会用一种方式提到你:
您可以创建一个服务来存储您要发送到另一个控制器的ID,如下所示:
angular.module('app').factory('commonService', function () {
var myValue;
return {
set: function (o) {
this.myValue = o;
},
get: function () {
return this.myValue;
}
};
});
现在,将此服务注入以下控制器:
angular.module('app').controller('firstController', function ($scope, commonService) {
$scope.setValue = function (value) {
commonService.set(value);
};
});
和
angular.module('app').controller('SecondController', function ($scope, commonService) {
$scope.getValue = function () {
$scope.value = commonService.get();
};
});