2012-08-10 5 views
2

내 실제 자바 스크립트 프로젝트에서 정말 이상한 상황이 있습니다. 나는이 이벤트를 구독 개체가매개 변수에서 배열 매개 변수로 오는

$.subscribe("merilon/TablesLoaded", myfunc) 

두 개의 매개 변수 이벤트와 함수에서 myfunc의 배열하지 않은 사용자 정의 이벤트를 만들고이 이벤트

$.publish("merilon/TablesLoaded", getTables()); 

에 배열을 넣어. 대신이 매개 변수를 다음과 같이 다음 배열에서 각 항목을 이벤트를 얻을

그래서 난 expectet 무엇

myfunc(event, [obj1, obj2, obj3 ... objn]){...} 

입니다하지만 난

myfunc (event, obj1, obj2, obj3 ... objn){...} 

내가 해결을 원하지 않는 얻을. 내가 왜 이런 일이 일어나고 어떻게 막을 수 있는지 이해하는 것이 필요합니다. 누구 아이디어? 위에서 언급 한 바와 같이

+0

$ .publish/$ 구독은 기본 jQuery를 될 것 같지 않습니다. 어떤 플러그인을 사용하고 있습니까? 같은 것을 행동하지 않는 많음이있는 셈 ... – OcuS

+0

문제는 nettuts + pub/sub 모델로 배열을 보낼 수 없다는 것입니다. $ .publish ("merilon/TablesLoaded", array); 우리가 http://api.jquery.com/trigger/ 에서 볼 때 다음 $의 .trigger ("merilion/TablesLoaded", 이벤트, 배열) 우리가 .trigger를 읽을 수있는 다른 아무것도 아니다 (eventType [, extraParameters]) click 또는 submit과 같은 JavaScript 이벤트 유형이 포함 된 eventTypeA 문자열입니다. extraParameters 이벤트 처리기로 전달할 추가 매개 변수입니다. – Lehnhard

+0

그래서이를 방지 할 수있는 방법이 없습니다, 다음 : 1. diffrent 2. $ .publish ("merilon/TablesLoaded"와 같은 해결 방법, {오 뭔가를 타 술집/서브 시스템을 쓰기 또는 사용 : getTables()}); 누군가 다른 가능성을 알면 나에게 생각을 나눌 수 있습니다. \t VAR = $ O – Lehnhard

답변

0

:.

(function($) 
{ 
var o = $({}); 
$.each(
     { on : "subscribe", trigger : "publish", 
     off : "unsubscribe" }, 
     function(key, api) 
      { 
      $[api] = function() 
         { 
         o[key].apply(o, arguments); 
         } 
      } 
     ); 
     })(jQuery); 
관련 문제