我在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。
有人能想出一个解决这个问题的好方法吗?
答案 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)
}
希望这能帮到你!