Angular说什么......
[ngSubmit]阻止默认操作(表单意味着将请求发送到服务器并重新加载当前页面),但仅限于表单不包含action,data-action或x-action属性。
所以如果您无法从HTML 中删除[action]属性,那么如何覆盖此行为以在表单提交时注入自定义代码并阻止定义的[action]被触发?< / p>
一种可能的解决方案是创建一个指令并覆盖DOM属性“onsubmit”。这里的CONS是你被迫在后端配置它时你可以使用angular属性
达到相同的目的 app.directive("contactForm", function(){
return {
link: function( scp, elm, att )
{
elm[0].onsubmit = function( evt )
{
/* your custom code here */
}
}
};
});
提前致谢
答案 0 :(得分:2)
如果要在编译action
之前删除ng-submit
,只需创建一个具有更高优先级的指令,即删除该属性。
app.directive('remove-action', function () {
return {
priority: 1, // ngSubmit has priority 0
compile: function (element) {
element.removeAttr('action');
return function link () {};
}
};
});
答案 1 :(得分:0)
所以我遇到了类似的问题,这就是我最终解决的问题。
对于angularjs 1.2,它足以将动作设置为空白
行动=&#39;&#39;
对于angularjs 1.3,你必须将动作设置为这样的
action =&#39; javascript:;&#39;
我不确定这是否是有效的HTML或最佳做法,但确实有效。