2

Zur Zeit habe ich diese Komponente Definition:Referenzform in Winkelkomponente ohne Rahmen

var controller = ['$http', '$timeout', '$scope', function($http, $timeout, $scope) { 
     this.isInvalid = function() { 
      return $scope.changePinForm.$invalid; 
     };  
    }]; 

    var component = { 
     templateUrl: path.fromRoot('/application/libs/components/pin-change/view/pin-change.html'), 
     controller: controller, 
     controllerAs: 'vm' 
    }; 

    angular.module('pin-change', ['confirm-reject', 'compare-validator', 'is-numeric']) 
     .component('pinChange', component); 
}); 

Welche diese HTML-Datei über templateUrl verweist:

<form name="changePinForm" class="form-horizontal"> 
    <!-- etc. etc. --> 
</form> 

Im Moment ich habe, Umfang Referenz zu verwenden, das Formular:

$scope.changePinForm.$invalid; 

Ich würde es vorziehen, Umfang und Referenz zu vermeiden für m vom Controller der Komponente.

Ist dies möglich oder ist der Anwendungsbereich immer noch der einzige Weg?

Antwort

2

Sie können Ihren Formularnamen name="vm.changePinForm"vm (Controller-Alias) verwenden.

Und dann können Sie einfach vm.changePinForm.$invalid in Ihrem Controller zugreifen. Damit sind Sie nicht auf $scope in Ihrem Controller angewiesen.

var controller = ['$http', '$timeout', 
    function($http, $timeout) { 
    var vm = this; 
    vm.isInvalid = function() { 
     return vm.changePinForm.$invalid; 
    };  
    } 
]; 
Verwandte Themen