Доступ к элементам списка из JavaScript - PullRequest
0 голосов
/ 03 октября 2011

Я хочу получить доступ к элементам модели по индексу из JavaScript в шаблон Play Framework:

<script type="text/javascript" charset="utf-8">
    window.onload = function()
    {
        var cl = ${colors.size()};
        int i = 0;
        for (i=0;i<cl;i++)
        {
            labels = labels + "${colors.name.get(i).escapeJavaScript().raw()}";
        }
    }
</script>

Моя проблема заключается в том, что этот цикл вызывает исключение:

IndexOutOfBoundsException: Index: 12, размер: 4

Nota 0: модель = цвет.

Nota 1: размер 4.

Nota 2: если я тестирую сфиксированное число вместо переменной i это нормально, но это не то, что мне нужно.

Не могу понять, почему это не работает.

1 Ответ

3 голосов
/ 03 октября 2011

Вы пытаетесь использовать Groovy внутри цикла Javascript, что неверно.

Помните, что ваш код Groovy (внутри $ {}) оценивается с помощью шаблонов Play на стороне сервера, и результат HTML-страницы возвращается вклиент и Javascript оцениваются на стороне клиента (браузером, а не на вашем сервере).

возможно, вы хотите сделать что-то вроде:

<script type="text/javascript" charset="utf-8">
window.onload = function()
{
    labels = [#{list colors.name}"${_.escapeJavaScript().raw()}"#{if !_isLast},#{/if}#{/list}];
}

который по-прежнему опасен, если вы не понимаете, что он делает,

предпочитает использовать простой запрос AJAX и метод renderJSON для динамических загрузок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...