2016-10-25 2 views
0

Я использую WebSocket (JavaScript), который имеет следующие события:Угловые Несколько событий с одной функцией

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

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

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

Как вы видите, я updathing статус чата с использованием этих событий, но это выглядит repetative, есть любой способ объединить все эти события 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; 
}; 

Это воспользовавшись яваскрипта способности ссылаться на элементы с использованием либо точечной нотации (ctrlScope.conn.onopen), либо обозначением массива (ctrlScope.conn ["onopen"])