2012-07-03 3 views
6

나는 상황을 고수했다. JS Helper를 사용하고 있습니다. 다음 코드를 사용했습니다.JS 도우미 CakePHP에서 수동으로 이벤트 트리거링

<?php $this->Js->get('#client_id') 
     ->event('change', $this->Js->request(array('action' => '../ajax/get_client_location_and_process'), 
        array('update' => '#client_location_process', 
        'async' => false, 
        'dataExpression' => true, 
        'method' => 'post', 
        'evalScripts' => true, 
        'data' => $this->Js->serializeForm(array('isForm' => True, 'inline' => True)) 
        ) 
        ) 
     ); 

페이지로드시 변경 이벤트를 트리거하려고합니다. document.ready 메소드를 사용하고 있다면 작동하지 않습니다. JS 헬퍼 메서드를 찾을 수 없어 컨트롤에 대한 일부 이벤트를 명시 적으로 트리거 할 수 있습니다. JQuery trigger()를 필요할 때마다 폼 요소의 기능처럼 어떻게 수행 할 수 있는지 코드를 제안하십시오. 이미 jQuery를 약 .trigger()을 발견하기 때문에

+0

. 어떤 도움을 많이 주셨습니다. –

+3

개인적으로 나는 'JSHelper'가 이런 종류의 것으로 만들어 졌다고 생각하지 않는다. 정말 내 경험에 의한 아약스 요청에 대해서만 그렇다. .js 파일에 JS를 작성하면 장기간에 thind를 훨씬 더 명확하게/더 쉽게 만들 수 있다고 말할 수 있습니다. – Dunhamzzz

+0

찾고 계신 것이 있으십니까? – uzyn

답변

12

, 당신은 단지보기 코드와 함께 사용할 수 있습니다 :

<?php 
    // Your view code 
?> 
<script>$('#client_id').trigger('change');</script> 

을 다른 방법으로, 당신은 여전히 ​​PHP를 통해 그것을 할 선호하는 경우, 당신은 아마 당신의 자신을 만들 수 있습니다 컨트롤러에서 $helpersArunjsHelper 추가, 예를 들면 :

<?php 
class ArunjsHelper extends AppHelper { 
    public $helpers = array('Html'); 

    function trigger($element, $event, $options = array()) { 
     return $this->Html->scriptBlock("$('$element').trigger('$event');"); 
    } 
} 

도우미 :

<?php 
class SomeController extends Controller { 
    public $helpers = array('Arunjs'); 

    // Your controller code 
} 
,

그런 다음보기에서 호출 할 수 있습니다 : 나는 JQuery.trigger() JsHelper에 해당하는 코드를 찾기 위해 노력하고

<h1>Hello</h1> 
<p>Your usual view HTML code</p> 

<?php // Trigger the change event ?> 
<?php echo $this->Arunjs->trigger('#client_id', 'change'); ?>