Angularjs 如何使用“角度”;“元素”;父窗体或查找访问父窗体的方法?

Angularjs 如何使用“角度”;“元素”;父窗体或查找访问父窗体的方法?,angularjs,Angularjs,在“form input leve”上的angular js指令中,我需要一个对父窗体的引用,以便访问“on submit”事件 现在,我可以按Id查询表单并添加提交 但是,我想用angula的“元素”方法来实现它。 但它就是不起作用 angular.module('app.common').directive('validateField', ['$timeout', function ($timeout) { return { restrict: 'A',

在“form input leve”上的angular js指令中,我需要一个对父窗体的引用,以便访问“on submit”事件

现在,我可以按Id查询表单并添加提交

但是,我想用angula的“元素”方法来实现它。 但它就是不起作用

angular.module('app.common').directive('validateField', ['$timeout', function ($timeout) {
    return {
        restrict: 'A',
        require: '^form',
        scope: {
            error: '=validateField'
        },
        link: function(scope, el, attrs, form) {

            if (document.getElementById('testing')){

                var e = angular.element(document.getElementById('testing'))
                e.on('submit', function() {
                    console.log('Works!');
                })
            };

            el.parent('form').on('submit', function() {
                console.log('How do i do this?');
            })
        }
    };
}]);
你知道怎么做吗

更新

我找到了一个解决方案,但不确定它是否优雅:

// Validate field on "form submit".
            angular.element(el[0].form).on('submit', function() {
                validate();
            });

您可以在angular.element函数中使用CSS选择器

angular.element('#myId'),
angular.element('.myClass')
话虽如此,当您需要form controller时,您可以使用它的$name属性进一步抽象您的指令:

require: '^form',
link: function(scope,el,attrs,form) {
    ...
    if(form.$name) {
        var domForm = angular.element("[name=" + form.$name + "]")
        domForm.addClass('whee');
    }
}

嗯,在我看来这是“错误的”。您的指令不需要以这种方式了解其自身范围之外的特定元素。您通常会使用某种服务跨组件同步数据,或提供所需的事件/事件处理,或让控制器将两者结合起来

如果看不到您试图在事件处理程序中执行的操作,则很难知道您试图实现的操作,但看起来您只是打算执行一些验证。您不能使用一些自定义AngularJS验证来完成这项工作吗


变量
元素从哪里获取?这是
el
还是
e
的拼写错误?是的,拼写错误:),我找到了一个解决方案,虽然我不知道它是否优雅;我不想用身份证的frankie。。。另外,我必须检查,您的方法可能需要jqueryCheck编辑。它不需要jQuery,而是使用angularjs内部jqLite。