2016-05-26 16 views
0

我是AngularJS的新手。在我的parentController中,我添加了一个div,其中包含select以从Database获得emloyeeList。并在childController,我正在创建新的Employee。员工创建后,我想将此员工排到parentController并更新select标记。如何更新父控制器中的选择标签从AngularJS的子控制器发出

下面是我试过的。

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

}]); 

这里EmployeeFactoryCommonFactory是有方法来获取和增加雇员。 谢谢...

+0

你'getEmployeeAfterCreate --- EMIT -----'你的名字发射器的定义,你在'getEmployeeAfterCreate听'。 –

回答

0

在未来,可能更容易只是张贴您的实际查询,而不是整个街区,但这里就是你的问题:

您注册名称为发射器: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 ----------- "); 
    }); 
}); 

DEMOhttp://jsfiddle.net/NfPcH/15304/