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