7

我正在使用fuelUX 向导和Angularjs。我希望基于此控制器方法启用或禁用下一个按钮:

$scope.canMoveForward = function(){
        switch($("#moduleWizard").wizard("selectedItem").step){
            case 1:
            //check if the module on the first step is valid*/  
                return $scope.validSelection && $scope.linkedPredicateForm.$valid;

            case 2:
            //check if the table is empty
                return !linkingDataSource.isEmpty();

            case 3:
                var enab= ($scope.saveModeForm.$valid && $scope.newSourceForm.$valid) || 
                ($scope.saveModeForm.$valid && $scope.appendSourceForm.$valid)
        }
    };

所以确实这就是我取消按钮的方式:

<div class="actions">
                <button class="btn btn-mini btn-prev" ng-click="refresh()"> <i class="icon-arrow-left"></i>Prev</button>
                <button class="btn btn-mini btn-next" data-last="Finish"  id="wizard-next" ng-disabled="!canMoveForward()"
                        ng-click="handleStepResult()">
                    Next<i class="icon-arrow-right"></i></button>
            </div>

它工作正常,除非我从第二页回到第一页:如果在第二页中禁用下一个按钮,即使在第一页上也是如此,除非我不在那里编辑表单。反正有没有刷新 ng-disabled 绑定?

4

2 回答 2

13

我猜 AngularJS 无法检查 的输出是否canMoveForward()已更改。我发现对于这类事情,依赖范围变量更容易。你可以这样做:

ng-disabled="!canMoveForward"

然后在您的控制器中,根据需要将属性设置为 true/false:

$scope.canMoveForward = false;
于 2013-06-13T09:35:09.430 回答
2

我遇到了同样的问题,我发现问题出在!操作员身上。

这失败了:

ng-disabled="!canMoveForward()"

但这会起作用:

ng-disabled="canNotMoveForward()"
于 2014-01-28T01:30:58.177 回答