Как обновить select tag в Родительском контроллере при излучении от дочернего контроллера в AngularJS

Я новичок AngularJS. В мой parentControllerя добавил divто что содержит selectчтобы получить emloyeeListот Database. И вchildController, Я создаю новое Employee. После создания employee я хочу выпустить этого сотрудника parentControllerи обновить selectтег.

Ниже то, что я пытался.

mainApp.
controller(
"childController",
['$scope', 'EmployeeFactory', 'CommonFactory', 'EmployeeFactory',
function ($scope, EmployeeFactory, CommonFactory, EmployeeFactory) {
$scope.CreateEmployee = function (newEmployee) {
        var response = EmployeeFactory.CreateEmployee($scope.newEmployee);

        response.success(function (successData) {
            alert(JSON.stringify(successData));

            $scope.GetEmployeeList = function () {
                EmployeeFactory.GetEmployeeList().success(function (data) {
                    alert("empCreated-------emit");
                    $scope.$emit('getEmployeeAfterCreate --- emit-----', { getEmployeeAfterCreate: data });
                }).error(function (data) {
                    alert("getEmpAfterCreate ---- emit-----" + data);
                });
            };

            $scope.GetEmployeeList();
        });
        response.error(function (errorData) {
            alert('ERROR-----------' + errorData);
        });
    };

}]);

mainApp.controller("parentController", ['$scope', 'EmployeeFactory', 'CommonFactory', function ($scope, EmployeeFactory, CommonFactory) {

$scope.employees = {};
$scope.$on('getEmployeeAfterCreate', function (event, args) {
    alert("getEmployeeFrom Create ----------- " + JSON.stringify(args.getEmployeeAfterCreate));
    $scope.employee = args.getEmployeeAfterCreate;

    $scope.employees = {
        ID: $scope.employee.ID,
        FName: $scope.employee.FName,
        LName: $scope.employee.LName,
        Qualifications: $scope.employee.Qualifications,
        Gender: $scope.employee.Gender,
        Phone: $scope.employee.Phone,
        Email: $scope.employee.Email,
        Address: $scope.employee.Address,
        Cities: $scope.employee.Cities
    };
});

}]);

Здесь EmployeeFactoryи CommonFactoryесть способы получить и добавить сотрудников.
Спасибо…

1 ответ

  1. В будущем может быть проще просто опубликовать ваш фактический запрос, а не весь блок, но вот Вы проблема:

    Вы регистрируете излучатель с именем: getEmployeeAfterCreate --- emit-----и вы слушаете дальше getEmployeeAfterCreate. Эти имена должны совпадать, иначе нет никакого способа связать их вместе.

    Упрощенный пример:

    var mainApp = angular.module("app", []);
    
    mainApp.
    controller(
      "childController",
      function($scope) {
        $scope.emitter = function() {
          $scope.$emit('getEmployeeAfterCreate', {
            getEmployeeAfterCreate: {}
          });
        }
      });
    
    mainApp.controller("parentController", function($scope) {
    
      $scope.$on('getEmployeeAfterCreate', function(event, args) {
        alert("getEmployeeFrom Create ----------- ");
      });
    });
    

    Демо : http://jsfiddle.net/NfPcH/15304/