2014-02-15 4 views
1
다음

에서 DOM 팝업 창에 추가 한에 모델을 전달하면 문제가 :Grails의

내가 페이지, 예를 들면 www.app.com/home이 있고 난에 슬라이드 방식으로 추가 된 일부 창을 DOM을 통해 jquery. 이러한 창 중 하나에는 대화 상대의 Gmail 계정을 조사하는 기능이 있습니다.

이이 방식으로 수행됩니다

  1. 사용자가 홈 페이지에 있습니다.
  2. 검색 친구 버튼을 슬라이드
  3. 클릭 옵션의 Gmail (JQuery와에 의해 추가, rthe 내용이 다른 .gsp에) 많은 옵션이있는 창을 클릭하고 그것의 OAuth, 권한 및 계정 선택을 구글의 리디렉션 여기서 그는 자신의 연락처 목록에 액세스를 수락해야합니다.
  4. 한번 받아 들여지면 다시 홈 페이지로 리디렉션됩니다. var에서 Google의 콜백인지 알 수 있으므로 팝업을 다시 표시하는 스크립트를 실행했습니다.

내가 가지고있는 문제는 홈 페이지 자체에서 $ {friendList} 컨트롤러가 전달한 모델에 액세스 할 수 있지만 팝업 창에 코드를 추가하면 $ { friendList}가 검색되지 않습니다.

+0

코드를 팝업 창으로 전달하는 방법은 무엇입니까? – unekwu

+0

Ey burt, $ ('# divname')과 같이로드합니다 .load (page url) –

답변

0

이전에이 문제를 해결하기 위해 grails 렌더링 템플릿을 사용했습니다. jquery가 팝업되면 숨겨진 div를 가질 수 있습니다. 예 :

<div id="theSlideWindow" style="display:none"> 
    <g:render template="gsptemplate" collection="${friendList}" var="myfriend" /> 
</div> 

이제 버튼을 클릭하면 jquery가 div를 숨김 해제하고 애니메이션을 적용하지만 애니메이션을 적용합니다. 이제는 새로 고침 할 때마다로드되기 때문에 friendList의 크기에 따라 효율성이 떨어집니다.

그러나 당신은 여전히 ​​다음을 수행하여 JQuery와로드 작업을 할 수 있습니다 : 숨겨진 입력

  1. 추가 사용자 ID.

    <input type="hidden" value="${userid}"/> 
    
  2. 사용 JQuery와는 그래서 PARAM으로 ID를 보내

    $('button').click(function() { 
        var page = "gspurl/show?userid=" + $("#hidden").val(); 
        $("div").load(page, function(response, status, xhr) { 
        //do something here 
        }); 
        return false; 
    }); 
    
  3. 당신의 GSP 사용하는 사용자 ID에 friendList를로드 할 수 있습니다.

또 다른 대안은 gsp 대신 html 또는 json을 반환하는 컨트롤러를 사용하는 것입니다.

친구 목록을 전달하는 방법에는 여러 가지가 있지만 분명히 몇 가지 아이디어가 있기를 바랍니다.