$超时功能在if语句中不起作用

时间:2019-04-03 07:17:35

标签: angularjs angularjs-directive angularjs-scope

我正在使用angular设置一个Web表单,借此用户可以完成表单,从服务器获得响应,然后重定向到另一个页面。

angular.module('discountController', ['discServices'])

.controller('discCtrl', function(Discount,  $timeout, $location){
    var app = this;

    app.reqDiscount = function(discountData) {
            Discount.reqDiscount(app.discountData).then(function(data) {
                if (data.data.success) {
                    app.successMsg = data.data.message ; // Create Success Message
                    $timeout(function(){
                        console.log('timeout fired');
                        $location.path('/discountoutcome');                        
                        } , 3000);
                } else {
                    app.errorMsg = data.data.message; // Create an error message
                }
            });
        }; 
    });    

在上面的代码中,我调用了app.reqDiscount函数,并成功地从服务器获取了响应,该响应填充了app.successMsg变量。但是$ timeout函数然后不起作用。但是,如果将$ timeout函数放在if-else语句之外,则它确实可以工作。这不是我想要的,因为如果有错误,我想保留在页面上。

在我的代码的其他区域,我已经将$ timeout函数放在这样的嵌套位置中并且可以正常工作,所以我不明白为什么它在这里不起作用。

您能给我的任何帮助都会很棒。即使您不能回答这个问题,也可以给我一些调试方面的技巧,因为console.log()是目前我唯一的调试方法,所以对您有所帮助。我正在使用Visual Studio代码。

Chrome控制台: Chrome console screen shot

Visual Studio控制台: VSC console

1 个答案:

答案 0 :(得分:0)

我明白了。我对API的编码不正确。 data.data.success返回false而不是true。感谢您的帮助。