angularjs – 如何从它的指令访问转换的范围

我有一个指令,其中包含一个带有表单的转换.我想从指令访问表单,但它是未定义的.

如何访问transclude的范围?

我刚开始有角度,所以也许我想做的不是最佳做法?

我做了一个简单的演示来说明我正在尝试做什么.

https://plnkr.co/edit/wzq5oFTuoAqVJMF2RUy2?p=preview

<my-directive>
   <form role="form" name="myForm" ng-submit="submit()">
        <input type="text" id="myInput" ng-model="myInput" />
        <input type="submit" value="Submit" />
    </form>
</my-directive>

var myApp = angular.module('myApp',[]);

myApp.controller('myController',function myController($scope){

});

myApp.directive('myDirective',function(){
   return {
    template: '<div ng-transclude></div>',restrict: 'E',transclude: true,replace: true,link: function (scope,element,attrs) {
      scope.submit = function(){
        debugger;
        var myForm = scope.myForm; //myForm is undefined

      } 
    }
   }
});

解决方法

您应该使用link参数而不是link函数中的scope参数来访问dom元素.

var myForm = element[0].querySelector('form')

要么

var myForm = element[0].children.myForm

将为您提供表单元素的句柄.我推荐前者.

相关文章

ANGULAR.JS:NG-SELECTANDNG-OPTIONSPS:其实看英文文档比看中...
AngularJS中使用Chart.js制折线图与饼图实例  Chart.js 是...
IE浏览器兼容性后续前言 继续尝试解决IE浏览器兼容性问题,...
Angular实现下拉菜单多选写这篇文章时,引用文章地址如下:h...
在AngularJS应用中集成科大讯飞语音输入功能前言 根据项目...
Angular数据更新不及时问题探讨前言 在修复控制角标正确变...