如何将值传递给Angular JS Service

时间:2016-06-02 15:08:38

标签: angularjs

我已在文本框等上实现了编辑和显示值,但现在想将这些代码传输到Angular JS Service.Here是我的代码 -

app.factory('fetchEmpService', ['$rootScope', '$http', function ($rootScope, $http ) {
    var employees = [];
    return {

        editEmp: function (EID) {
            debugger;
            for (i in $rootScope.employees) {
                if ($rootScope.employees[i].EmpId == EID) {
                    $rootScope.newemployee = {
                        EmpId: $rootScope.employees[i].EmpId,
                        Name: $rootScope.employees[i].Name,
                        Age: $rootScope.employees[i].Age,
                        City: $rootScope.employees[i].City,
                        Gender: $rootScope.employees[i].Gender
                    };
                }
            }
        },


    };
}]);

我使用$ rootScope而不是$ scope(以前在控制器中使用)对象。这是正确的方式,因为它没有返回。

1 个答案:

答案 0 :(得分:2)

将数据存储在$rootScope中并不是一种好的做法,但您认为自己需要factory时才能正确。

不是将员工存储在$rootScope上,而是将其存储在服务中。

app.factory('fetchEmpService', ['$http', function ($http) {
    var employees = [];

    return {
        getEmployees: function () {
            return employees;
        },
        setEmployees: function (newEmployees) {
            employees = newEmployees;
        },
        editEmp: function (EID) {
            for (var i in employees) {
                if (employees[i].EmpId == EID) {
                    return {
                        EmpId: employees[i].EmpId,
                        Name: employees[i].Name,
                        Age: employees[i].Age,
                        City: employees[i].City,
                        Gender: employees[i].Gender
                    };
                }
            }
        }
    };
}]);

无论您最初设置$rootScope.employees的位置,请将其更改为fetchEmpService.setEmployees(foo);。为了吸引您的员工,fetchEmpService.getEmployees();

我不确定您的editEmp功能如何运作,以便您配置,但这是一个明智的开始。