2

Angularが言うこと...

[ngSubmit] は、フォームに action、data-action、または x-action 属性が含まれていない場合に限り、デフォルトのアクション (フォームの場合、リクエストをサーバーに送信し、現在のページをリロードすることを意味します) を防ぎます。

[ action ] 属性を HTML から削除できなかった場合、フォームの送信時にカスタム コードを挿入し、定義された [action] がトリガーされないようにするために、この動作をどのようにオーバーライドしますか?

考えられる解決策の 1 つは、ディレクティブを作成し、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 に答える