【问题标题】:Custom events handling in javascriptjavascript中的自定义事件处理
【发布时间】:2014-11-03 13:39:20
【问题描述】:

我在 Javascript 中将事件从一个对象传递到另一个对象时遇到问题。我尝试使用 PubSub 来做到这一点。举个例子吧:

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 对象内部是私有的。

问题是,当事件“test”发布时,它由 pubsub 处理,但因为 objA 不是全局的,我在控制台中看到 doSth 函数是未定义的。

有人知道如何解决这个问题吗?

【问题讨论】:

  • but because objA is not global 这对于发布-订阅模式来说不是问题。除非..您使用的是什么 PubSub 实现?你在哪里打电话给objA.publish()
  • 我使用的是 amplify.js 和 nunt,它们都没有奏效。但我现在尝试了 PubSub.js,看起来一切正常:O.

标签: javascript events publish-subscribe


【解决方案1】:

我不知道什么是 pubsub 但 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();

// 抱歉,这不是一个答案,但我没有能够发表评论的声誉。所以我不得不写在答案框中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-28
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多