Grails:g:remotelink和仅一个请求

时间:2013-12-26 08:31:07

标签: grails gsp

我正在使用Grails'标签中的g:remotelink在下拉菜单中执行一个ajax请求:

       <ul class="nav navbar-nav navbar-right">
            <li class="dropdown">
                <g:remoteLink class="dropdown-toggle" data-toggle="dropdown"
                    controller="mystuff" action="items" update="itemsListMenu">Items<b class="caret"></b></g:remoteLink>
                <ul id="itemsListMenu" class="dropdown-menu">
                </ul>
            </li>
        </ul>

它工作正常,但我想在第一次按下拉下拉菜单时才开始请求,而不是每次打开或关闭菜单时。 我在Grails的remotelink文档中读到可以使用onSuccess / onLoaded / onComplete / etc函数,但我不确定最好的方法是什么。 有什么想法吗?

更新

按照约翰史密斯的建议,我添加了这个:

<g:remoteLink id="myButton" onSuccess="jQuery('#myButton').attr('onclick',' ')" ... >

2 个答案:

答案 0 :(得分:0)

grails remoteLink创建一个JQuery Ajax请求,所以使用jquery我会做这样的事情:

// first set loaded to false    
var loaded = false;

// if not loaded execute ajax request
if(!loaded){
    $.ajax({
        type:'POST',
        url:"/mystuff/items",
        success:function(data){
            $("#itemsListMenu").html(data);
        }
    }).done(function(){
        // when done set loaded to true. 
        loaded = true;

    });
}

答案 1 :(得分:0)

如果要将onsuccess事件处理程序与样式一起使用,并且如果要包含jquery 你去吧

function killLink(element) {
     element.attr("onclick"," ");
}

此函数将简单地删除grails从标记创建的onclick ajax处理程序

你的gsp看起来像这样

 <g:remoteLink class="dropdown-toggle" data-toggle="dropdown"
                    controller="mystuff" onsuccess="killLink(this)" action="items" update="itemsListMenu">Items<b class="caret"></b></g:remoteLink>