在下面的代码中,$ watch stills使用旧的 newVal 而不是更新的。 我无法理解$ watch被叫出来的时间?如果我不想为特定功能调用$ watch,该怎么办?怎么做?
我是angularJs的新手!请帮忙!
$scope.$watch('vmHome.widgets', function(newVal) {
if (!!newVal && angular.isArray(newVal) && (newVal.length > 0)) {
vmHome.widgetGridConfig.data.rows = [];
normalizeWidgetData(newVal);
} else {
vmHome.widgetGridConfig.data.rows = [];
}
}, true);
答案 0 :(得分:0)
您可以从here找到$watch
的文档。关于何时调用$watch
来提出问题:
$watch
$scope.$apply()
或$scope.$digest()
当范围值更改,由于ng-click
等用户交互而触发事件时,将运行摘要周期
试试此代码,希望它能解决您的问题:
$scope.$watch('widgets', function(newVal) {
if(!!newVal && angular.isArray(newVal) && (newVal.length > 0)) {
vmHome.widgetGridConfig.data.rows = [];
normalizeWidgetData(newVal);
} else {
vmHome.widgetGridConfig.data.rows = [];
}
}, true);