2015-10-07 25 views
0

我需要一些幫助來理解下面的代碼。 http://www.html5rocks.com/en/tutorials/frameworks/angular-websocketsAngularJs和SocketIo

app.factory('socket', function ($rootScope) { 
var socket = io.connect(); 
    return { 
    on: function (eventName, callback) { 
     socket.on(eventName, function() { 
     var args = arguments; 
     $rootScope.$apply(function() { 
      callback.apply(socket, args); 
     }); 
     }); 
    }, 
    emit: function (eventName, data, callback) { 
     socket.emit(eventName, data, function() { 
     var args = arguments; 
     $rootScope.$apply(function() { 
      if (callback) { 
      callback.apply(socket, args); 
      } 
     }); 
     }) 
    } 
    }; 

我有問題的理解:

  1. 從根本arguments從哪裏來
  2. 是什麼callback.apply,什麼是它做它取自?

回答

1

這是基本的JavaScript,與AngularJS或Socket.io無關。

arguments是一個「魔術」變量,可用於每個函數內以類似數組的方式訪問它的參數。

Function#apply是一種使用不同的this上下文提供arguments作爲第二個參數來調用函數的方法。

+0

控制器是這樣的: '函數AppCtrl($範圍,插座){ socket.on( '初始化',函數(數據){$ = scope.name data.name; $ scope.users =數據。用戶; });' 你能向我解釋流程嗎?我不確定'callback.apply'在調用什麼。 –

+0

我相信這篇文章會回答你最初的問題(如果你同意,你可以接受)。如果您有更多問題,請隨時創建更多帖子。 – Pavlo