我正在尝试创建一个多步骤表单,其中我创建了两个不同的视图和两个不同的控制器我试图将数据从视图1传递到服务中定义的函数,然后尝试在另一个函数中访问此数据同样的服务。 以下是我写的服务:service.js
var EmployeeService = angular.module('EmployeeService',[])
.service('AddEmployee', function($resource){
var Employee = $resource('/api/meetups');
var emp_email="";
this.email = function(email){
var emp_email = email;
return emp_email;
};
this.personal = function(first_name){
var employee = new Employee();
employee.email = emp_email;
employee.first_name = first_name;
employee.$save();
};
});
我正在尝试将电子邮件功能的emp_email变量访问到个人功能中。但我无法这样做。有没有什么办法可以在我的第二个函数中使用emp_email变量。
以下是使用服务的控制器:
app.controller('mainCrl', ['$scope', '$resource', '$location', 'AddEmployee', function ($scope, $resource, $location, AddEmployee){
$scope.nextSection = function(){
$scope.email = AddEmployee.email($scope.employeeEmail);
};
}]);
app.controller('secondCrl', ['$scope', '$resource', '$location', 'AddEmployee', function ($scope, $resource, $location, AddEmployee){
$scope.secondSection = function(){
$scope.first_name = AddEmployee.personal($scope.first_name);
};
}]);
当用户填写电子邮件并点击下一部分时将执行nextSection函数,当用户在第二个视图中输入first_name并执行提交时,将执行secondSection函数。
如何在服务中的两个函数之间传递数据?任何形式的帮助都非常感谢!!!!
答案 0 :(得分:1)
替换
var emp_email = email;
与
return emp_email = email;
(你修改局部变量)
答案 1 :(得分:1)
您的代码存在的问题是您正在创建第二个" emp_email"您的电子邮件功能中的变量,因此您分配的电子邮件将转到电子邮件功能中的本地emp_email变量,而不是服务函数中的emp_email变量。
所以删除var并更改
this.email = function(email){
var emp_email = email;
return emp_email;
};
到
this.email = function(email){
emp_email = email;
return emp_email;
};
这应该允许你在函数之间共享emp_email变量。