При инициализации переменной литералом объекта любая функция внутри этого литерала вызывается только один раз:
ОШИБОЧНАЯ
var settings = {
value : service.cache.MY_VALUE,
location: $location.path()
}
Функция $location.path()
должна вызываться при каждом цикле дайджеста:
function settingsFn() {
return {
value : service.cache.MY_VALUE,
location: $location.path()
}
}
$scope.$watchCollection( settingsFn, function(newValue, oldValue){
console.log('New value detected in settings', newValue);
});
Помещая литерал объекта в функцию settingsFn
, функция $location.path()
вызывается каждый раз, когда вызывается функция settingsFn
.