目前我有这个组件定义:
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;
我更愿意避开范围并引用组件控制器中的表单。
这是可能的还是范围仍然是唯一的方法?
答案 0 :(得分:3)
您可以将表单名称设为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;
};
}
];