首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MVC场景中的Javascript事件与回调

MVC场景中的Javascript事件与回调
EN

Stack Overflow用户
提问于 2011-08-25 03:16:52
回答 2查看 3.1K关注 0票数 17

我正在尝试找出一种很好的方式来拥有视图和控制器,并最小化它们之间的联系。

除了一个事件的多个订阅者之外,像这样的js代码有什么主要区别吗:

var customers = {
    get: function(callback) {
        $.get('/customers', {}, function(data) { 
            callback.call(this, data); 
        });
    }
};

还有像这样的事件驱动方法(事件对象只是伪代码):

var customers = {
    get: function() {
        $j.get('/customers', {}, function(data) { 
            event.publish('customers.loaded', data); 
        });
    }
};

在这两种情况下,customers对象的使用者都不知道它的内部工作原理。其中一种方式比另一种方式更有优势吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-25 03:22:41

事件是回调,但不同的是它们被绑定的时间和地点。

在第二个场景中(假设您使用该伪代码触发一个事件),您可以在调用get的范围之外绑定一个回调,从而实现更强的数据封装。此外,事件支持触发多个回调,因此可以根据有权访问customers对象的对象来执行不同的函数。

我推荐使用面向事件的解决方案,因为JavaScript是一种面向事件的语言。

票数 9
EN

Stack Overflow用户

发布于 2012-02-28 00:07:14

当我制作一个模块时,我会使用回调解决方案。这就少了一个依赖项:对事件对象的依赖项。

如果我下载了一个第三方插件,比方说你现在可能正在工作的那个插件,我想要控制当函数执行完成并使用我自己选择的事件总线引发我自己的事件时调用的内容。

如果不制作模块,我认为这两种解决方案都有其魅力。:)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7181007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档