指令调用前的角度禁用

时间:2014-09-30 05:31:50

标签: javascript angularjs angularjs-directive

我在AngularJS应用程序中遇到了一些挑战。我有一个用户可以填写的表格。当他们提交时,我从Bower下载的指令接管,在后台执行POST,然后返回我的范围功能完成。我需要禁用单击的按钮,并在单击提交按钮时显示加载img。通常,设置更新'范围内的变量将解决这个问题:

    <input data-ng-disabled="form.isUpdating" type="submit" value="Submit"/>
    <img data-ng-show="form.isUpdating" src="/images/spinner.gif">

     $scope.saveForm = function (){
        $scope.form.isUpdating = true;
        // Do some stuff
        $scope.form.isUpdating = false;
     }

我遇到的问题是我无法控制最初发生的事情,因为该指令接管,无法访问我的范围。我可以搞乱代码,但如果我不必,我宁愿不这样做。因此,当我单击按钮提交时,在指令中的POST完成之前没有任何反应,这对我的用户不利。

我无法执行ng-click并将form.isUpdating设置为true,因为这会立即禁用该按钮,因此点击不会注册。据我所知,你不能一起使用ng-click和ng-disabled。

有人能想出一个解决这个问题的好方法吗?

1 个答案:

答案 0 :(得分:0)

完成异步所需的工作。这将使它超出当前的范围 消化周期。 像这样:

 $scope.saveForm = function (){
    $scope.form.isUpdating = true;
    $timeout(function () {
        //this will run outside the current
        //digest cycle, so the UI has a change of updating
        // while I'm working!
        // Do some stuff
        $scope.form.isUpdating = false;
    },0)
 }

希望这能帮到你!