angularjs - 如何在 Angularjs 中观察 2 个变量,其中 1 是位置路径?
问题描述
当位置路径更改或通过服务更改对象时,我正在尝试运行一个函数。我根本看不到触发该功能。
var settings = {
value : service.cache.MY_VALUE,
location: $location.path()
}
$scope.$watchCollection(function(){ return settings; }, function(newValue, oldValue){
console.log('New value detected in settings');
});
为什么当我转到新 URL 或更改缓存值时控制台没有被触发?
解决方案
当使用对象字面量初始化变量时,该字面量内的任何函数都只会被调用一次:
错误
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
函数时都会调用该函数。
推荐阅读
- python - Embedding Gifs in Discord Bot
- c# - 当 SSIS 中的 C# 转换需要同步时,在输出缓冲区中使用 AddRow()?
- javascript - 从变量(从导入的 JS)中获取字符串作为对象中的键
- mysql - MySQL "join on like" does not utilize INDEX
- html - 登陆页面文本隐藏在浏览器调整大小的图像下
- javascript - 如何从角度打字稿中的数组对象获取数据?
- docker - GPU out of memory error just by declaring TF Keras Metrics
- c# - 资源大小的 UWP 构建问题(.PRI 文件问题)
- javascript - 如何在 html 中隐藏我的 Google Maps API 密钥?
- java - Java Find Closest Pair in Dataset 给出 NullPointerException