如何在AngularJS中从子控制器发出时更新父控制器中的选择标记

时间:2016-05-26 05:11:48

标签: angularjs

我是AngularJS的新手。在我的parentController我添加了一个div,其中包含select,以便从emloyeeList获取Database。在childController中,我正在创建新的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
    };
});

}]);

此处EmployeeFactoryCommonFactory有获取和添加员工的方法。 感谢...

1 个答案:

答案 0 :(得分:0)

将来可能更容易发布您的实际查询而不是整个块,但是您的问题是:

您使用名称 UI.node.popupcostTable = $('#popcostTable'); dataSrc=[["NAM","1"],["EMEA","2"]]; UI.node.popupcostTable.DataTable({ "data":dataSrc, "paging": false, "info": false, "ordering": false, "filter" : false, "Processing": true, "destroy": true, "aoColumnDefs" : [{ "aTargets" : [1], // Column to target "mRender" : function(data, type, full) { return FRUtil.currencyFormat(data); } } ], "bAutoWidth": true }); }; 注册发射器,并且您正在聆听getEmployeeAfterCreate --- emit-----。这些名称需要匹配,否则就无法将两者结合在一起。

简化示例:

getEmployeeAfterCreate

DEMO http://jsfiddle.net/NfPcH/15304/