Как выполнить проверку на NG-disabled в angularjs?

Я использую мастер 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)
        }
    };

так действительно, вот как я decleared кнопки:

<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?

2 ответов


Я думаю, AngularJS не может проверить, если выход canMoveForward() изменилось или нет. Я обнаружил, что для такого рода вещи легче полагаться на переменные. Вы могли бы сделать что-то вроде этого:

ng-disabled="!canMoveForward"

затем в вашем контроллере просто установите свойство true / false по мере необходимости:

$scope.canMoveForward = false;

у меня была такая же проблема, и я обнаружил, что проблема с ! оператора.

Это не удается:

ng-disabled="!canMoveForward()"

но это будет работать:

ng-disabled="canNotMoveForward()"