在位于"form input“上的角js指令中,我希望引用父表单,以便访问"on”事件。
现在,我可以通过Id查询表单并添加提交。
但是,我想用安古拉的“元素”方法来实现它。但它就是行不通。
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();
});发布于 2014-10-27 14:39:49
嗯,这在我看来是不对的。您的指令不应该需要以这种方式了解它自己作用域之外的某些特定元素。您通常会使用某种服务来同步跨组件的数据,或者提供所需的事件/事件处理,或者让控制器将两者结合在一起。
在事件处理程序中看不到您想要做的事情,很难知道您想要实现什么,但是看起来您只是想做一些验证。您不能使用一些自定义的AngularJS验证来完成这个任务吗?
https://stackoverflow.com/questions/26587937
复制相似问题