2013-06-13 10 views
7

Używam fuelUX Wizard i Angularjs. Chciałbym kolejny przycisk, aby włączyć lub wyłączyć w oparciu o tej metodzie kontrolera:Jak przeprowadzić kontrolę ng-niepełnosprawnych w 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) 
     } 
    }; 

więc rzeczywiście jest to jak ja decleared przycisków:

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

i działa dobrze, z wyjątkiem kiedy się powrót z drugiej strony do pierwszej strony: jeśli następny przycisk zostanie wyłączony na drugiej stronie, to będzie tak samo, nawet na pierwszej stronie, chyba że nie edytuję tam formularza. Czy mimo to można odświeżyć wiązanie ng-disabled?

Odpowiedz

13

Domyślam się, że AngularJS nie może sprawdzić, czy wyjście canMoveForward() uległo zmianie, czy nie. Zauważyłem, że dla tego rodzaju rzeczy łatwiej jest polegać na zmiennych zasięgu. Można zrobić coś takiego:

ng-disabled="!canMoveForward" 

Następnie w kontrolerze tylko ustawić właściwość true/false w zależności od potrzeb:

$scope.canMoveForward = false; 
+0

bardzo true.Setting zmienną działa smoothly.Just wywołać funkcję do zmiennej i powrócić prawda czy fałsz z tej funkcji +. 1 dla tego – jayadevkv

2

miałem ten sam problem i odkryłem, że problem jest z operatorem !.

ta zawodzi:

ng-disabled="!canMoveForward()" 

Ale to będzie działać:

ng-disabled="canNotMoveForward()" 
+0

Wydaje się, że działa to z samodzielnymi funkcjami, ale nie z metodami. – savenkov

+0

Nie mogę uzyskać kreatora do renderowania z odpowiednim stylem CSS. Używam również AngularJS. Czy możesz mi pomóc z ładowaniem odpowiednich plików css i js? A także jak wyrenderować czarodzieja? dzięki. –

Powiązane problemy