角度分量中的参考形式,没有范围

时间:2016-08-18 10:43:22

标签: javascript angularjs angularjs-controller angularjs-components

目前我有这个组件定义:

    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;

我更愿意避开范围并引用组件控制器中的表单。

这是可能的还是范围仍然是唯一的方法?

1 个答案:

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