2014-11-03 110 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對象的實例是公共的,但對象A的實例在B對象內是私有的。

問題是,當事件「測試」發佈時,它由pubsub處理,但因爲objA不是全局的,所以我在控制檯中看到doSth函數未定義。

任何人都有一個想法如何解決?

+0

'但因爲objA不是全球性的'這不能成爲pub-sub模式的問題。除非..使用什麼PubSub實現?你在哪裏調用'objA.publish()'? – dfsq 2014-11-03 13:47:19

+0

我正在使用amplify.js和nu,他們都沒有工作。但我現在嘗試了PubSub.js,它看起來像一切正常:O。 – jacobs 2014-11-03 13:52:50

回答

0

我不知道什麼是發佈 - 訂閱,但objA爲B內部本地是不是一個問題 您可以檢查此代碼

function A() { 

    function _publish(){ 

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

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

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

//對不起,這不是一個答案,但我沒有信譽能夠發表評論。所以我不得不寫回答框