簡體   English   中英

如何將值傳遞給Angular JS服務

[英]How to pass values to Angular JS Service

我已經實現了在文本框等上編輯和顯示值的功能,但現在想將這些代碼傳輸到Angular JS Service。這是我的代碼-

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(以前在控制器中使用)對象。 這是正確的方法,因為它什么也不返回。

將數據存儲在$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函數如何工作,這取決於您進行配置,但這是一個明智的起點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM