Playframework вызов метода модели из представления JavaScript - PullRequest
2 голосов
/ 18 февраля 2012

Как в учебнике по игре для набора тегов (настроить поле crud); я хочу добавить новую функциональность, когда пользователь выбирает тег, тогда javascript должен получить текущего пользователя (models.user) и вызвать метод user.doSomething (). это можно сделать в пользовательском поле CRUD? (как в учебнике по тегам yabe?).

есть ли способ, которым я могу создать собственное поле CRUD в виде списка флажков, и когда пользователь проверяет некоторые флажки, тогда я должен написать код (возможно, javascript), который получает текущего зарегистрированного пользователя и затем вызывать метод для этой модели пользователя?

спасибо.

1 Ответ

1 голос
/ 20 февраля 2012

Вот пример из руководства по игре (настройка поля 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}

Вы должны реализовать метод getConnected () самостоятельно в вашем контроллере (возможно, Application.java).Предположим, что вы используете Secure Module , это будет что-то вроде

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

}
...