2014-11-03 6 views
1

자바 스크립트에서 한 객체에서 다른 객체로 이벤트를 전달하는 데 문제가 있습니다. 나는 그것을하기 위해 PubSub를 사용하려고 시도했다. 예를 들어 보겠습니다.javascript의 사용자 정의 이벤트 처리

function A() { 

    function _publish(){ 
     PubSub.publish("test"); 
    } 
    function _doSth() { 
     console.log("Done!"); 
    } 

    return { 
     publish: _publish, 
     doSth: _doSth 
    }; 
} 

function B() { 
    var objA = new A(); 

    PubSub.subscribe("test", function(){ 
     objA.doSth(); 
    }); 

} 

이 코드 예는 내 애플리케이션의 객체 구조와 유사합니다. B 객체의 인스턴스는 public이지만 객체 A의 인스턴스는 B 객체의 private입니다.

문제는 "테스트"이벤트가 게시 될 때 pubsub가 처리하지만 objA가 전역 적이 지 않기 때문에 콘솔에서 doSth 함수가 정의되지 않았 음을 알 수 있습니다.

누구나 어떻게 해결할 수 있을까요? 내가 무엇을 pubsub하지만 objA는 B 내부 로컬 잘 모릅니다

+0

그러나 objA가 전역 적이 지 않아서 pub-sub 패턴에 문제가 될 수 없다. 않는 한 .. 어떤 PubSub 구현을 사용하고 있습니까? 그리고 당신은'objA.publish()'를 어디에서 호출할까요? – dfsq

+0

amplify.js와 nunt를 사용 중이었지만 그 중 아무 것도 작동하지 않았습니다. 그러나 지금 PubSub.js를 시도하고 모든 것이 작동하는 것처럼 보입니다 : O. – jacobs

답변

0

function A() { 

    function _publish(){ 

    } 
    function _doSth() { 
     console.log("Done!"); 
    } 

    return { 
     publish: _publish, 
     doSth: _doSth 
    }; 
} 

function B() { 
    var objA = new A();  
    objA.doSth(); 
} 
new B(); 

이이 답변 죄송 아니다 //이 코드를 확인할 수 있지만, 내가 언급 할 수있는 명성을 해달라고 문제 아니다 . 그래서 나는 답 박스로 작성해야만했다.

관련 문제