我想了解下面这段代码:
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)
对此参数的确切做什么有什么好处。有人可以解释一下
答案 0 :(得分:0)
observeInfo
函数只是提供了一种定义每次"更改时执行的回调的方法。事件被发出。使用事件提供的值作为参数调用此函数。在此示例中,它是callInfo
变量。
angular.copy()
仅用于确保不将相同的对象(或对该对象的引用)传递给回调,因此可能对回调函数中的数据进行的任何更改都不会影响回调函数。原始变量。