Angular js - 等待变量的方法

时间:2016-12-22 14:17:54

标签: angularjs typescript

我的控制器中有范围属性

isLoading : boolean = true;

和isLoading为false时应执行的方法A,如果isLoading为true且调用methodA,则应等待isLoading更改为false,然后继续执行

methodA() {
   // if isLoading == true wait for it to change to false
   // then do some stuff
}

我怎么能做到这一点?

2 个答案:

答案 0 :(得分:0)

解决方案1:使用观察者

$scope.$watch('isLoading', function(n){
        if(n){
            methodA();
        }
    }
)

解决方案2:如果某个html视图中isLoading绑定到ng-model(例如输入)。在html中的someotherMethod(该输入)上调用ng-change。和someotherMethod会是这样的:

function someotherMethod(){
    if(isLoading){
        methodA()
    }
}

答案 1 :(得分:0)

  

您还可以使用promise对象,并触发您喜欢的任何内容   回应。

     

$ http默认返回一个promise对象,所以你可以做一些事情   像这样:

     

在您的工厂/服务中:

foo: function($http){
   return  $http({ 
                method: 'POST',
                url: API_PATH,
                data: { email: email, password: password }
           });
}
  

现在,在您的控制器中使用它:

foo().then(
   function success(response){
      // fire your method (methodA)
   },
   function error(error){

   }
);