javascript - 不带范围的 Angular 分量的引用形式

标签 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;

我宁愿避免范围并从组件的 Controller 引用表单。

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

最佳答案

您可以使用 vm( Controller 别名)将表单名称设为 name="vm.changePinForm"

然后您可以轻松访问 Controller 内的vm.changePinForm.$invalid。这样您就不再依赖于 Controller 内的 $scope

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

关于javascript - 不带范围的 Angular 分量的引用形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39016145/

相关文章:

javascript - 如何使用 Javascript 和 JQuery 修改位于 Bootstrap 模式中的按钮的外观?

javascript - Jquery load() 使页面刷新

javascript - RequireJS + Angular : Undefined app. 回调不触发

javascript - CORS header 在 MEAN 堆栈应用程序中不起作用

angularjs - AngularJS 中 Controller 声明的区别

javascript - 列出注入(inject)的依赖项

javascript - 使用 Javascript window.location 方法通过移动设备重定向用户

javascript - 从 Angular Controller 访问字典

javascript - Angular1同级 Controller 如何访问彼此的数据

JavaScript 方法 `createElement`(可能)生成无效的 XHTML