2012-04-20 2 views
0

레일즈 애플리케이션을 작성 중이며 모바일 뷰에 jQueryMobile을 사용하고 있습니다.경우에 따라 jQueryMobile 페이지 변경을 어떻게 비활성화 할 수 있습니까?

대개의 경우 JQM은 평소와 같이 '페이지'를 추가 및 제거하여 DOM을 조작 할 수있게하려고합니다. 그러나 어떤 경우에는 기본 동작을 재정의하고 내 자신의 간단한 DOM 조작을 수행하고 싶습니다.

예를 들어 사용자 목록이 있으며 각 사용자에게는 '연락처에 추가'링크/양식이 있습니다.

<ul data-role='listview'> 

    <li> 
    <span class='name' id="user_56757234">Jim</span> 
    <form action="/contacts" class="new_contact_form" data-remote="true" data-type="json" id="new_contact_form_56757234" method="post"> 
     <!-- form info here --> 
     <input name="commit" type="submit" value="Add Contact" /> 
    </form> 
    </li> 

    <li> 
    <span class='name' id="user_975827294">Fred</span> 
    <form action="/contacts" class="new_contact_form" data-remote="true" data-type="json" id="new_contact_form_975827294" method="post"> 
     <!-- form info here --> 
     <input name="commit" type="submit" value="Add Contact" /> 
    </form> 
    </li> 

    <!-- etc... --> 

</ul> 

사용자가 주어진 연락처를 추가하기 위해 클릭 한 후 요청이 성공했다고 가정하면 지정된 양식이 사라져서 연락처가 추가되었음을 나타냅니다.

표준 Rails RESTFUL 스타일 컨트롤러를 준수해야하므로 이러한 양식은 ContactsController create action에 제출되므로 새로운 연락처의 JSON 표현을 반환합니다.

다시 말해서 JQM이 새 페이지를 삽입하지 못하도록 차단하고 싶습니다. 이벤트를 트리거 한 특정 양식을 삭제하려고합니다. 그러나 나는 다른 곳에서 의존하는 표준 JQM 행동을 무력화하고 싶지 않다.

이렇게 간단하고 명확한 방법이 있습니까?

나는 'pagebeforeload'이벤트가 내 친구 인 것을 수집하지만 이것을 설정하는 방법이 확실하지 않습니다.

이 게시물은 관련성이있는 것으로 보입니다. (jquery mobile prevent page change depending on calling page) 그러나 이것이 글로벌 설정이라는 것을 수정합니까? 내 경우에 잔인한 것처럼 보입니다.

그것은 Rails 3.1 프로젝트이므로 표준 Rails-UJS에서 사용하기에 이상적인 컨트롤러 고유의 javascript 에셋 파일에서 설정할 수 있습니다.

$('#new_contacts').live('pageinit', function(event) { 
    $('.new_contact_form_mobile').submit(function(e) { 
    var form = $(this); 
    var formData = $(this).serialize(); 
    var request = $.ajax("/contacts", { 
     type: "POST", 
     data: formData, 
     dataType: "json" 
    }); 

    request.done(function(msg) { 
     form.fadeOut(); 
    }); 

    return false; 
    }); 
}); 
+0

그래서 ... 되돌아 보면, 해결책은 꽤 분명했습니다. DIY, JQM에게 휴식을주십시오. – doublea

답변

0

뭔가

어떤 도움이 많이 주시면 감사하겠습니다. 이렇게하면 JQuery Mobile의 ajax 동작이 비활성화되고 Rails에서 ajax 호출을 수행 할 수 있습니다.

0

이 양식 태그의 속성으로 data-ajax="false"을 시도해보십시오

따뜻하게,이 같은

관련 문제