Как выполнить проверку на 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()"