playframework call来自view javascript的模型方法

时间:2012-02-17 21:44:48

标签: javascript jquery crud playframework-2.0

喜欢在标签集的游戏教程中(自定义crud字段);我想在用户选择标签时添加新功能,然后javascript应该获得当前用户(models.user)并调用方法user.doSomething()。这可以在CRUD自定义字段中执行吗? (比如yabe标签的教程?)。

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

感谢。

1 个答案:

答案 0 :(得分:1)

以下是播放教程中的示例(自定义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);
        }

}