代码理解

时间:2017-01-16 11:10:23

标签: javascript angularjs

我想了解下面这段代码:

    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);
    });
}

根据我的理解,$emit的行为与此处的$broadcast相同,因此我们会发出'更改'然后在observeInfo()中捕获此事件,但将angular.copy(callInfo)参数作为函数发送以及observeInfo(fn)对此参数的确切做什么有什么好处。有人可以解释一下

1 个答案:

答案 0 :(得分:0)

observeInfo函数只是提供了一种定义每次"更改时执行的回调的方法。事件被发出。使用事件提供的值作为参数调用此函数。在此示例中,它是callInfo变量。

angular.copy()仅用于确保不将相同的对象(或对该对象的引用)传递给回调,因此可能对回调函数中的数据进行的任何更改都不会影响回调函数。原始变量。