2016-06-18 2 views
3

У меня есть основной контроллер, который отображает мое имя Software Group:как отправить идентификатор из одного контроллера на другой в угловом

var SoftwareGroupApp = angular.module('SoftwareGroupApp', []); 
SoftwareGroupApp.controller('SoftwareGroupController', function($scope, $http) { 
$http.get("select_SoftwareGroup.php") 

.then(function (response) {$scope.result = response.data.records;}); 
}); 

На мой взгляд, я отображая это Software Group в списке

<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;}); 
}); 

, когда кто-то нажмите на Softwa re Название группы, у меня есть другое подменю, в котором указано имя моего программного обеспечения.

<ul> 
        <div ng-controller="SoftwareController"> 
         <li ng-repeat="x in names"><a title="" href="">{{ x.name }}</a></li> 
        </div> 
        </ul> 

То, что я пытаюсь сделать, это когда кто-то нажать на название Software Group, моя Software идентификатор группы сохранить в переменной и отправить на мой SoftwareController. и я показываю имена программного обеспечения, которые == id

+0

Почему вы разместили код в изображениях? что помешало мне ответить. – Satpal

+1

Пожалуйста, введите код в виде кода, а не как изображения –

+0

i почтовый код в виде кода – sara

ответ

1

Лучшее решение - использовать uirouter, а не ng-controller, и передать идентификатор в качестве параметра состояния.

Другим вариантом было бы использовать компоненты, а не ng-контроллер, с которыми вы можете передавать параметры.

2

Я предлагаю вам использовать $ rootScope.broadcast для такого рода операций. Чтобы быть очень коротким, вы можете использовать трансляцию таким образом. Я один контроллер, где вы хотите, чтобы отправить данные написать так:

$rootScope.$broadcast("yourFuction", data); 

В контроллере приемника получить эти данные, как это:

$rootScope.$on("yourFuction", function(data){ 
    //do something 
}); 

проверить это для получения дополнительной информации: https://docs.angularjs.org/api/ng/type/$rootScope.Scope

Спасибо ,

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(); 
 
    }; 
 
});