2016-01-02 4 views
-1

У меня есть код в GSP как:Как выполнить 2 оператора if/else в gsp g: each?

<g:each in="model" status="i" var="variable"> 
    if(condition1){ 
    //code1 
    return; 
    } 
    else{ 
    //else for code1 
    } 
    if(condition2){ 
    //code2 
    return; 
    } 
    else{ 
    //else for code2 
    } 
</g:each> 

Я хочу, чтобы выполнить оба, если условия в г: каждый, и переключающих только тогда, когда оба условия выполнены. Но случается, что если какое-то условие становится истинным в первом случае, то оно вырывается из g: каждый. Любые решения?

+0

Что произойдет, если вы завернете его в функцию, а затем вызовите его. – Manu

+0

http://grails.github.io/grails-doc/latest/ref/Tags/if.html – cfrick

+0

@Manu: Я не могу обернуть его в функцию, так как я использую переменную из g: каждый в выражении if и эта переменная не будет доступна за пределами g: each –

ответ

1

Что здесь происходит, ваш код gsp генерирует блоки кода JavaScript; набор из if блоков для каждого объекта в коллекции model. Это не «разрывается» от g:each, потому что к моменту запуска кода JavaScript g:each уже давно закончил работу. g:each работает на сервере без запуска блоков if и код JavaScript работает в браузере.

Взгляните на сгенерированный HTML. Я подозреваю, что ваша ошибка связана с переменными Grails, которые не разрешены в код JavaScript, и, возможно, некоторые логические ошибки. Эти заявления о возврате выглядят подозрительными.

 Смежные вопросы

  • Нет связанных вопросов^_^