6
當,其中和如何我應該擺脫舊的事件監聽器,當控制器不相關了嗎?如何清理從控制器分配的事件?
考慮SPA有兩條路線:/login
和/loggedin
app.factory('socket', ['$window', function(window) {
return window.io();
}]);
app.controller('loginController', ['socket', function (socket) {
this.tryLogin = function(credentials) {
socket.emit('login', credentials);
}
sokcet.on('loginResponse', function(data) {
if (data.status == 'OK') {
// Navigate to loggedInController
} else {
// Show error message and keep listening - user might try again
}
});
}]);
app.controller('loggedInController', ['socket', function (socket) {/* Logged in, but loginController is still listening for loginResponse */}]);
問題:
- 當導航到
/loggedin
然後loginResponse
事件不斷聽 - 當瀏覽回新
/login
頁監聽器被添加(實際上我現在有2位聽衆)
現在我有'$ destory'事件相同的問題,不是嗎?糾正我,如果我錯了,仍然學習角.. – Kristian
哦,$範圍destorys與所有的監聽連接到它? – Kristian
當範圍在Angular中被銷燬時,所有相關的'$ on'事件處理函數都會[與其一起銷燬](https://stackoverflow.com/a/27016855/2039244)。 – sdgluck