Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 未在promise.then().finally()中禁用按钮_Jquery_Angularjs_Promise - Fatal编程技术网

Jquery 未在promise.then().finally()中禁用按钮

Jquery 未在promise.then().finally()中禁用按钮,jquery,angularjs,promise,Jquery,Angularjs,Promise,我对angularJS$http调用有一个问题,该调用返回一个承诺,该承诺针对它调用了.then()和.finally()(请参见下面的代码): 基本上,我的页面上有一个禁用的按钮,可以通过用户输入启用: <button id="submit-link-edit" type="submit" class="btn btn-success" ng-disabled="editDisabled" data-loading-text="Saving..." data-co

我对angularJS$http调用有一个问题,该调用返回一个承诺,该承诺针对它调用了.then()和.finally()(请参见下面的代码):

基本上,我的页面上有一个禁用的按钮,可以通过用户输入启用:

            <button id="submit-link-edit" type="submit" class="btn btn-success" ng-disabled="editDisabled" data-loading-text="Saving..." data-complete-text="Saved">
                Save Changes
            </button>

保存更改
当按钮被启用并单击时,它调用my
$scope.edit
函数,该函数调用my factory(
上下文
)中返回承诺的方法。我使用
.then()
确定该调用的成功或失败,并相应地设置按钮(让它显示“已保存”或再次还原为“保存更改”),然后使用
.finally()
将按钮设置回禁用状态,因为我不希望他们能够在不进行输入更改的情况下再次单击该按钮,从而为他们启用该按钮

编辑 我将代码转换为使用指令,而不是直接的DOM操作


可能值得一提的是(我不知道为什么我以前忘了提到它)
.button()
来自bootstrap.js,用于切换启用/禁用和按钮上的文本,我有一种非常强烈的感觉,即引导脚本和角度脚本之间的某些东西正在断裂,这两种脚本都在修改按钮。

正如另一个人所说,尝试角度方式。然后,您可以在.Then和.finally方法中引用$scope上的变量

<button ng-model="btn" ng-disabled="isBtnDisabled">Button</button>
按钮
然后可以设置$scope.isBtnDisabled=true或false


按钮
功能Ctrl1($scope){
$scope.isBtnDisabled=true;
}

您正在使用按钮小部件吗?如果是这样,您需要通过调用
.button('disable')
来禁用它。顺便问一下,为什么要进行DOM操作,您可能应该以角度的方式进行操作……试试btn.prop(“disabled”、“disabled”);这是什么按钮<代码>btn.按钮(“加载”)如果这是一个常规按钮,则
prop('disabled',true)
是正确的。我已经更新了我的问题,并将代码切换到指令,但它具有相同的效果。一切正常,但最终结果是按钮仍然处于启用状态。这是使用angular操作DOM的更好实践,但是这也不起作用。
<button ng-model="btn" ng-disabled="isBtnDisabled">Button</button>
    <div ng-app="">
      <div ng-controller="Ctrl1">
        <button ng-disabled="isBtnDisabled">Button</button>
      </div>
    </div>
<script>
  function Ctrl1($scope) {
    $scope.isBtnDisabled = true;
  }
</script>