2014-11-03 132 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(); 

//对不起,这不是一个答案,但我没有信誉能够发表评论。所以我不得不写回答框