Angular $watch 如何识别 $scope.value 是如何变化的?
How an Angular $watch to indentity how the $scope.value changed?
我有一个变量手表。 $scope.value
我有两种可能性来更新我的值。
- 一个来自我的控制器,例如..通过任何服务。
- 另外是任何输入事件都可以更新我的$scope.value。通过按键等..
我需要确定更新是从我的手表发生的。
$scope.$watch('value',function(){
//how to identify from were my actual change occured.
});
没有内置的、简单的或标准的方法可以做到这一点。
您可以:
设置一个临时变量来指示更改源,例如
var sourceOfChange;
myService.doSomething().then(function() {
sourceOfChange = 'myService';
$scope.value = ...
});
$scope.$watch('value',function() {
if( sourceOfChange === 'myService' ) {
...
}
...
});
更新每个源的不同变量,观察这些变量并进行特定于源的处理,最后更新value
,例如:
// initialization
$scope.value = ...
$scope.valueFromInput = $scope.$value;
$scope.valueFromService = $scope.$value;
// watching the source-specific values
$scope.$watch('valueFromInput', function(newval) {
doInputSpecificProcessing(newval);
$scope.value = newval;
});
// watch the value and do common processing
$scope.$watch('value', doCommonProcessing);
也可以有其他方式
我有一个变量手表。 $scope.value
我有两种可能性来更新我的值。
- 一个来自我的控制器,例如..通过任何服务。
- 另外是任何输入事件都可以更新我的$scope.value。通过按键等..
我需要确定更新是从我的手表发生的。
$scope.$watch('value',function(){
//how to identify from were my actual change occured.
});
没有内置的、简单的或标准的方法可以做到这一点。
您可以:
设置一个临时变量来指示更改源,例如
var sourceOfChange; myService.doSomething().then(function() { sourceOfChange = 'myService'; $scope.value = ... }); $scope.$watch('value',function() { if( sourceOfChange === 'myService' ) { ... } ... });
更新每个源的不同变量,观察这些变量并进行特定于源的处理,最后更新
value
,例如:// initialization $scope.value = ... $scope.valueFromInput = $scope.$value; $scope.valueFromService = $scope.$value; // watching the source-specific values $scope.$watch('valueFromInput', function(newval) { doInputSpecificProcessing(newval); $scope.value = newval; }); // watch the value and do common processing $scope.$watch('value', doCommonProcessing);
也可以有其他方式