我已在文本框等上实现了编辑和显示值,但现在想将这些代码传输到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(以前在控制器中使用)对象。这是正确的方式,因为它没有返回。
答案 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
功能如何运作,以便您配置,但这是一个明智的开始。