首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用角“元素”父或查找方法来访问父窗体?

如何使用角“元素”父或查找方法来访问父窗体?
EN

Stack Overflow用户
提问于 2014-10-27 12:48:48
回答 2查看 1.8K关注 0票数 0

在位于"form input“上的角js指令中,我希望引用父表单,以便访问"on”事件。

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

但是,我想用安古拉的“元素”方法来实现它。但它就是行不通。

代码语言:javascript
运行
复制
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?');
            })
        }
    };
}]);

有什么办法吗?

更新

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

代码语言:javascript
运行
复制
// Validate field on "form submit".
            angular.element(el[0].form).on('submit', function() {
                validate();
            });
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-27 13:19:40

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

代码语言:javascript
运行
复制
angular.element('#myId'),
angular.element('.myClass')

尽管如此,当需要表单控制器时,您可以通过使用表单控制器的$name属性进一步抽象指令:

代码语言:javascript
运行
复制
require: '^form',
link: function(scope,el,attrs,form) {
    ...
    if(form.$name) {
        var domForm = angular.element("[name=" + form.$name + "]")
        domForm.addClass('whee');
    }
}
票数 0
EN

Stack Overflow用户

发布于 2014-10-27 14:39:49

嗯,这在我看来是不对的。您的指令不应该需要以这种方式了解它自己作用域之外的某些特定元素。您通常会使用某种服务来同步跨组件的数据,或者提供所需的事件/事件处理,或者让控制器将两者结合在一起。

在事件处理程序中看不到您想要做的事情,很难知道您想要实现什么,但是看起来您只是想做一些验证。您不能使用一些自定义的AngularJS验证来完成这个任务吗?

https://docs.angularjs.org/guide/forms#custom-validation

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26587937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档