playframework从视图javascript调用Model方法

playframework call Model method from view javascript

本文关键字:Model 方法 调用 javascript 视图 playframework      更新时间:2023-09-26

标签集的游戏教程(自定义crud字段);我想添加一个新功能,当用户选择一个标签时,javascript应该获取当前用户(models.user)并调用一个方法user.doSomething()。这可以在CRUD自定义字段中实现吗?(就像yabe标签的教程一样?)。

有没有一种方法可以让我自定义CRUD字段作为复选框列表,当用户选中一些复选框时,我应该编写代码(可能是javascript)来获取当前登录的用户,然后在该用户模型上调用一个方法?

谢谢。

这是播放教程中的示例(自定义crud字段)。我想您希望在单击标记时执行一个操作。这可以简单地完成,如下所示

#{crud.form}
    #{crud.custom 'tags'}
        <label for="tags">
            &{'tags'}
        </label>
        (...)
        <div class="tags-list">
            #{list items:models.Tag.findAll(), as:'tag'}
               <span id="${tag.id}" onclick="toggle(this)" class="tag ${object.tags.contains(tag) ? 'selected' : ''}">
                     /**** ADD An ACTION CALL HERE ******/
                    <a href="@{Application.getConnected().doSomething()}">${tag}</a>
                     /**** END *****/
               </span> 
               <input id="h${tag.id}" type="hidden" name="${fieldName}" 
                        value="${object.tags.contains(tag) ? tag.id : ''}" />
            #{/list}
        </div>
    #{/crud.custom}
#{/crud.form}

您必须在控制器(可能是Application.java)中自行实现getConnected()方法。假设您使用安全模块,它将类似于

void getConnected(){ 
        if(Security.isConnected()) {
            User user = User.find("byEmail", Security.connected()).first();
            renderArgs.put("user", user);
        }
}