Блок пользовательского интерфейса на AJAX загрузки для Grails

remoteLink используется для вызова обработчика сервера в проекте Grails, как показано ниже. Я могу разместить метод blockUi в onLoading, чтобы сделать удаленный вызов дружественным. Если есть небольшая удаленная ссылка, я могу сделать это для каждой удаленной ссылки. Но если есть много удаленных ссылок, повторять это не очень хорошая практика, как мне кажется.

Я хочу использовать теги GSP. Есть ли какой-либо метод, как перехватчик для события загрузки ajax remoteLink, чтобы сделать это без повторения? Если есть, то будет лучше, если какой-нибудь remoteLink можно будет исключить из blockUi, поместив тег вроде: кроме ='true'

Большое спасибо за помощь!

<g:remoteLink action="show"
          id="1"
          update="success"
          onLoading="blockUi()"
          onComplete="hideProgress()">Show Book 1</g:remoteLink>

1 ответ

Решение

Вы можете создать свой собственный TagLib и позвонить remoteLink с вашим onLoading по умолчанию.

class AjaxTagLib {
  static namespace = "my" //define a namespace to not conflict with g

  def remoteLink = { attrs ->
    //default onLoading attribute
    if(!attrs.onLoading) {
      attrs.onLoading = "blockUi()"
    }
    g.remoteLink(attrs)
  }
}

Тогда вы можете использовать это вместо g.remoteLink:

<my:remoteLink action="show" id="1" update="success">Show Book 1</my:remoteLink>
Другие вопросы по тегам