具有一个功能的 Angular 多个事件

Posted

技术标签:

【中文标题】具有一个功能的 Angular 多个事件【英文标题】:Angular Multiple events with one function 【发布时间】:2016-10-25 19:46:54 【问题描述】:

我正在使用具有以下事件的 Websocket (javascript):

    ctrlScope.conn.onerror = function() 
      ctrlScope.updateStatus();
    ;

    ctrlScope.conn.onclose = function() 
      ctrlScope.updateStatus();
    ;

    ctrlScope.conn.onopen = function() 
      ctrlScope.updateStatus();
    ;

如您所见,我正在使用这些事件更新聊天状态,但它看起来是重复的,有没有办法将所有这些 Websocket 事件合并为一个?

ctrlScope.conn[onError][onClose][onOpen] = function() 
   ctrlScope.updateStatus();
;

另外还有一个 Websocket 变量:readyState,它提供与事件相同的连接状态。这可以代替麻烦的功能,但是 $watch 不能用它。

请大家帮忙:(

【问题讨论】:

【参考方案1】:

这段代码我没试过,但理论上你可以这样写:

var handlers = ["onerror","onclose","onopen"];
for(var i=0;i<handlers.length;i++)
    ctrlScope.conn.[handlers[i]] = ctrlScope.updateStatus;
;

这是利用 javascript 使用点表示法 (ctrlScope.conn.onopen) 或数组表示法 (ctrlScope.conn["onopen"]) 引用元素的能力

【讨论】:

以上是关于具有一个功能的 Angular 多个事件的主要内容,如果未能解决你的问题,请参考以下文章

在 Angular 中处理 Accordion 的打开/折叠事件

如何添加具有功能的 Angular 材质自定义 mdToast?

Angular使用操作事件指令ng-click传多个参数示例

在Angular中->如何使用基于角色的访问权限检查用户是不是具有权限,并将角色保存在数据库中

单击事件仅适用于表格 Angular 8 的第一页

如何在 Angular 5 中从 Typescript 调用 JavaScript 函数?