Jquery 未在promise.then().finally()中禁用按钮
我对angularJS$http调用有一个问题,该调用返回一个承诺,该承诺针对它调用了.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
<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>