2017-01-16 5 views
0

私は、次のコードを理解しようとしています:私の理解$emitあたりとしてコードの理解

function changeInfo(newCallInfo) { 
    angular.extend(callInfo, newCallInfo); 
    internalScope.$emit('changed', angular.copy(callInfo)); 
} 

function observeInfo(fn) { 
    return internalScope.$on('changed', function (e, val) { 
     fn(val); 
    }); 
} 

ここで同じような$broadcast振る舞うので、私たちは「変更」を発し、その後observeInfo()でこのイベントをキャッチしますが、どのようなメリットがあります関数としてangular.copy(callInfo)パラメータを送信し、正確にはobserveInfo(fn)とします。誰かがこれを説明することができます

答えて

0

observeInfo関数は、単に "changed"イベントが発生するたびに実行されるコールバックを定義する方法を提供しています。この関数は、イベントで指定された値をパラメータとして呼び出されます。この例では、変数はcallInfoです。

angular.copy()は、単に同じオブジェクト(またはそのオブジェクトへの参照)がコールバックに渡されないようにするために使用されるため、コールバック関数内のデータに加えられた変更は元の変数に影響しません。

+0

これはコールバック手法です –