2

目前我有這個組件的定義:參考形式,而不範圍

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); 
}); 

它引用通過templateUrl這個HTML文件:

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

在我有使用範圍參考的瞬間形式:

$scope.changePinForm.$invalid; 

我寧願避免範圍和引用for m來自組件的控制器。

這是可能的還是範圍仍然是唯一的方法?

回答

2

您可以使您的表單名稱爲name="vm.changePinForm"使用vm(控制器別名)。

然後你可以很容易地訪問你的控制器內的vm.changePinForm.$invalid。您的控制器內部不依賴於$scope

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