调用REST WEBS服务并将值分配给AngularJS中的变量



我在控制器中定义了一个函数,该功能调用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];
        });
}

最新更新