AngularJs 从工厂获取员工
AngularJs get employee from factory
我在 employeeFactory
中有一个 employeeController
和一个 employeeFactory
我收到一个 employee
是这样的:
function employeeFactory(authenticationFactory,requestFactory,GLOBALS) {
var factory = {};
var vm = this;
vm.employee = {};
factory.getEmployee = function(id) {
data = {"api_token": authenticationFactory.getToken()};
url = GLOBALS.url + 'show/employee/' + id;
requestFactory.post(url, data)
.then(function (response) {
return vm.employee = response.data.result.Employee;
}, function () {
$window.location.assign('/');
});
}
return factory;
}
在我的控制器中,我尝试这样接收它:
console.log(employeeFactory.getEmployee($routeParams.id));
但是结果为空?
当我 console.log
我的 requestFactory
中的响应时,我收到一个 employee
对象。我做错了什么?
其背后的原因是,您错过了 factory.getEmployee
方法
requestFactory.post
的 return 承诺
代码
factory.getEmployee = function(id) {
data = {"api_token": authenticationFactory.getToken()};
url = GLOBALS.url + 'show/employee/' + id;
return requestFactory.post(url, data)
.then(function (response) {
return vm.employee = response.data.result.Employee;
}, function () {
$window.location.assign('/');
});
}
但是即使您这样做了,您也无法打印出价值 employee
的对象。它将通过 $http.post
方法/ $resource
方法
打印承诺对象 return
要获取该对象,您需要对该 promise 对象使用 .then
函数。如下图
employeeFactory.getEmployee($routeParams.id).then(function(employee){
console.log('Employee', employee)
})
我们可以在 angularjs 中使用延迟 api 来更好地在调用者和服务之间进行通信。
factory.getEmployee = function(id) {
var deferred = $q.defer();
data = {"api_token": authenticationFactory.getToken()};
url = GLOBALS.url + 'show/employee/' + id;
return requestFactory.post(url, data)
.then(function (response) {
deferred.resolve(response.data.result.Employee);
}, function () {
deferred.reject();
});
return deferred.promise;
}
在您的控制器上:
employeeFactory.getEmployee($routeParams.id).then(function(employee){
console.log('Employee', employee)
},function(){
$window.location.assign('/');
})
通过这种方法,如果您的响应延迟,我们可以通过一些消息通知呼叫者。
有关详细信息,请参阅此 link。
angular promises
我在 employeeFactory
中有一个 employeeController
和一个 employeeFactory
我收到一个 employee
是这样的:
function employeeFactory(authenticationFactory,requestFactory,GLOBALS) {
var factory = {};
var vm = this;
vm.employee = {};
factory.getEmployee = function(id) {
data = {"api_token": authenticationFactory.getToken()};
url = GLOBALS.url + 'show/employee/' + id;
requestFactory.post(url, data)
.then(function (response) {
return vm.employee = response.data.result.Employee;
}, function () {
$window.location.assign('/');
});
}
return factory;
}
在我的控制器中,我尝试这样接收它:
console.log(employeeFactory.getEmployee($routeParams.id));
但是结果为空?
当我 console.log
我的 requestFactory
中的响应时,我收到一个 employee
对象。我做错了什么?
其背后的原因是,您错过了 factory.getEmployee
方法
requestFactory.post
的 return 承诺
代码
factory.getEmployee = function(id) {
data = {"api_token": authenticationFactory.getToken()};
url = GLOBALS.url + 'show/employee/' + id;
return requestFactory.post(url, data)
.then(function (response) {
return vm.employee = response.data.result.Employee;
}, function () {
$window.location.assign('/');
});
}
但是即使您这样做了,您也无法打印出价值 employee
的对象。它将通过 $http.post
方法/ $resource
方法
要获取该对象,您需要对该 promise 对象使用 .then
函数。如下图
employeeFactory.getEmployee($routeParams.id).then(function(employee){
console.log('Employee', employee)
})
我们可以在 angularjs 中使用延迟 api 来更好地在调用者和服务之间进行通信。
factory.getEmployee = function(id) {
var deferred = $q.defer();
data = {"api_token": authenticationFactory.getToken()};
url = GLOBALS.url + 'show/employee/' + id;
return requestFactory.post(url, data)
.then(function (response) {
deferred.resolve(response.data.result.Employee);
}, function () {
deferred.reject();
});
return deferred.promise;
}
在您的控制器上:
employeeFactory.getEmployee($routeParams.id).then(function(employee){
console.log('Employee', employee)
},function(){
$window.location.assign('/');
})
通过这种方法,如果您的响应延迟,我们可以通过一些消息通知呼叫者。 有关详细信息,请参阅此 link。 angular promises