簡體   English   中英

播放框架JavaScript函數作為Scala模板參數

[英]Play framework JavaScript function as scala template parameter

我想使用scala模板重用javascript函數,因此我只需要傳遞不同的成功/失敗函數,但我似乎無法將javascript函數傳遞給scala模板。 請注意,我是新手,甚至不知道我在做什么。

這是我想要達到的目的:

@(formId: String, success: JavaScript, fail: JavaScript)
<script type="text/javascript">
    $("@formId").submit(function(e)
    {
        var data = $(this).serializeArray();
        var action = $(this).attr("action");
        $.ajax(
        {
            url : action,
            type: "POST",
            data : data,
            success:function(data, textStatus, jqXHR)           // Change contents to dynamic parameter for scala??? perhaps a javascript function to execute???
            {
                @success()
                /*console.log("save succesfull, progress!")
                alert('Save successfull, now move on!');*/
            },
            error: function(jqXHR, textStatus, errorThrown)     // Change contents to dynamic parameter for scala??? perhaps a javascript function to execute???
            {
                //if fails
                @fail()
                /*console.log(jqXHR.responseText);
                var errors = JSON.parse(jqXHR.responseText);
                console.log(errors);
                alert('Woops, something went wrong: ' + jqXHR.responseText);*/
            }
        });
        e.preventDefault();
    });
</script>

如何使用:

@snippets.ajaxFormSubmit("#form",
                        function()
                        {
                            alert("Save successfull, now move on!");
                        },
                        function()
                        {
                            alert("Save failed!");
                        }
                    )

您可以通過HTML類型將任何內容傳遞到模板。

@(formId: String, success: Html, fail: Html)
<script type="text/javascript">
    $("@formId").submit(function(e)
    {
        var data = $(this).serializeArray();
        var action = $(this).attr("action");
        $.ajax(
        {
            url : action,
            type: "POST",
            data : data,
            success:function(data, textStatus, jqXHR)           // Change contents to dynamic parameter for scala??? perhaps a javascript function to execute???
            {
                @success
            },
            error: function(jqXHR, textStatus, errorThrown)     // Change contents to dynamic parameter for scala??? perhaps a javascript function to execute???
            {
                @fail
            }
        });
        e.preventDefault();
    });
</script>

在客戶端視圖中,可以按以下方式使用它:

@successFunc = {
    alert("Save successfull, now move on!");
}

@failureFunc = {
    alert("Save failed!");
}

@snippets.ajaxFormSubmit("#form", successFunc, failureFunc)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM