我在控制器中定义了一个函数,该功能调用AngularJS中的REST Web服务。我需要将函数返回的值分配给变量。该函数的称为多次,具有不同的参数,并将返回的值分配给不同的变量。
我控制器中的功能采用一个参数,然后将其传递给Web服务。
function disableBlockFn(blocKName) {
var data = {
formId: vm.formId,
blockId: blocKName,
statusId: vm.statusId,
roleId: vm.roleId
}
roleService.displayBlock(data).then(function (data) {
return data[0];
});
}
当我将附加函数的值分配给变量并在控制台上打印时,我会得到'undefined'。
vm.pilot = vm.disableBlockFn('pilot_mpr_qualite_1');
console.log('pilot ', vm.pilot);
vm.pilot_ang = vm.disableBlockFn('pilot_mpr_qualite_ang');
console.log('pilot ', vm.pilot_ang);
功能请求WS
function displayBlock(objBlock) {
var defer = $q.defer();
$http({
method: 'GET',
url: config.urlPath + 'api/block/block'
}).then(function (data) {
var results = data;
defer.resolve(results.data.data);
}, function (data, status) {
defer.reject({
data: data,
status: status
});
});
return defer.promise;
}
您需要从DisableBlockFN返回承诺。如果您的功能在您的控制器中,则可以直接设置值。
function disableBlockFn(blocKName) {
var data = {
formId: vm.formId,
blockId: blocKName,
statusId: vm.statusId,
roleId: vm.roleId
}
//here you can return only your promise
return roleService.displayBlock(data);
}
然后,在您的控制器中解决承诺:
vm.disableBlockFn('pilot_mpr_qualite_1').then(function(data) {
vm.pilot = data;
console.log('pilot ', vm.pilot);
});
编辑:如果您的功能在您的控制器中,则可以执行此操作:
function disableBlockFn(blocKName) {
var data = {
formId: vm.formId,
blockId: blocKName,
statusId: vm.statusId,
roleId: vm.roleId
}
return roleService.displayBlock(data)
.then(function(data){
vm.pilot = data[0];
});
}