我在我的控制器中定义了一个函数,该函数调用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;
}
答案 0 :(得分:1)
您需要从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];
});
}