2

什么角说...

[ngSubmit] 阻止默认操作(对于表单,这意味着将请求发送到服务器并重新加载当前页面),但前提是表单不包含操作、数据操作或 x-action 属性。

因此,如果您无法从 HTML 中删除 [action] 属性,您将如何覆盖此行为以在表单提交时注入自定义代码并防止定义的 [action] 被触发?

一种可能的解决方案是创建一个指令并覆盖 DOM 属性“onsubmit”。这里的缺点是当您可以使用 angular 属性达到相同的值时,您被迫在后端配置它

    app.directive("contactForm", function(){

        return {
            link: function( scp, elm, att )
            {
                elm[0].onsubmit = function( evt )
                {
                                                                                                                                                                                                                                                                                /* your custom code here */
                }
            }
        };
    });

提前致谢

4

2 回答 2

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 () {};
        }
    };
});
于 2014-11-26T17:59:42.980 回答
0

所以我遇到了类似的问题,这就是我最终解决的方法。

对于 angularjs 1.2,将操作设置为空白就足够了

行动=''

对于 angularjs 1.3,您必须将操作设置为这样的

动作 = 'javascript:;'

我不确定这是否是有效的 html 或最佳实践,但它确实有效。

于 2015-06-08T19:12:48.537 回答