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