【问题标题】:AngularJS Get result of of a http service when it doneAngularJS完成后获取http服务的结果
【发布时间】:2016-09-19 20:47:19
【问题描述】:

我正在使用 AngularJS 从 API 获取数据 我通过 Angular 制作了一个服务和控制器。我从服务中获取数据并从控制器中使用它。 我有一个数据输入验证功能来检查重复的密钥,服务将通过将输入的密钥发送到服务器来做到这一点。 单击保存时,从控制器调用函数 Validate(),从 Validate() 调用服务 CheckExistedKey()。 我有如下一行

if(validate() == true){
    alert(''); //something to do
}

还有如下服务

var defer = $q.defer();
var checkExistedKey = function (key){
    return $http.get('http://localhost:2807/api/Event/CheckExistedkey?key=' + key
        ).then(function (results) {
            defer.resolve(results.data);
            return defer.promise();
        });
}

但警报是在 validate() 函数之前调用的。 我已将 $q.defer 投入使用,但没有任何改变。 请帮助我。

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    在验证中你还需要添加回调函数 -

     function validate(){
        var deferredRequest = checkExistedKey ();
            deferredRequest.then(function (success) {
               return true;
            }
     }
    

    看到这个 - example

    【讨论】:

    • 还是不行。 validate() 的结果是未定义的
    • function validate() { var deferRequest = EventService.checkExistedKey($scope.Event.eventKey); deferRequest.then(function (result) { return result; }); }我都规范化了,大家可以理解
    • 我已经更新了答案..请通过小提琴,您可以按照相同的步骤进行操作
    • 很高兴为您提供帮助.. 请您接受答案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 2015-02-26
    相关资源
    最近更新 更多