$ emit + $ on / $ broadcast + $ on не работают в AngularJS - PullRequest
0 голосов
/ 25 декабря 2018

Мне нужно вызвать функцию в другом контроллере в угловых js.Как это возможно, пожалуйста, помогите мне, и я использовал приведенный ниже код, но он не работает, пожалуйста, помогите мне кто-то

EmployeeCtrl

routerApp.controller('EmployeeController', function ($scope, $rootScope) {
        $rootScope.$on("CallSearchtMethod", function (searchName) {
            $scope.parentmethod(searchName);
        });
        $scope.parentmethod = function (searchName) {
            console.log("data is" + searchName);
        }
    }
})

NavCtrl

routerApp.controller('navCtrl', function ($scope,$rootScope ) {    
   $scope.searchFun = function (searchName) {
      $rootScope.$emit("CallSearchtMethod", searchName);
    }
})

1 Ответ

0 голосов
/ 25 декабря 2018

Вы должны использовать Сервис .Он позволяет вам создавать общие функции, которые будут использоваться во многих местах, в данном случае это контроллеры.

Вот пример рабочего кода, который поможет вам в обслуживании.

angular.module('starterByAR', ['starterByAR.controllers', 'starterByAR.services']);

angular.module('starterByAR.controllers', [])
.controller('mainOne', [
  '$scope', 'myService',
  function($scope, myService) {
    $scope.text = myService.commonFunction();
  }
])
.controller('mainTwo', [
  '$scope', 'myService',
  function($scope, myService) {
    $scope.text = myService.commonFunction();
  }
]);

angular.module('starterByAR.services', []).service('myService', function() {
  return {
    commonFunction: function(){
      return 'Some Text';
    }
  };
});
<head>
  <title>Angular Starter</title>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<body ng-app="starterByAR">
  <div ng-controller="mainOne">
    Here is {{text}} from Controller 1
  </div>
  <div ng-controller="mainTwo">
    Here is {{text}} from Controller 2
  </div>
</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...