正确使用范围监视许多变量
Proper using of scope watch for many variables
哪种解决方案最好。在控制器中为每个数据设置三个手表,并相应地设置不同的方法或为所有三个变量设置一个手表,然后检查哪个改变了和运行指定的方法。
寓言事件处理,最好是在父对象上委托事件,然后根据指定的事件委托dom的部分。如果angular允许这样观看,如何实现?
基本解决方案很简单,但需要三个手表:
$scope.$watch(function() {
return service.var1;
},
function callback(new,old) {
$scope.function1();
});
$scope.$watch(function() {
return service.var2;
},
function callback(new,old) {
$scope.function2();
});
$scope.$watch(function() {
return service.var3;
},
function callback(new,old) {
$scope.function3();
});
根据事件观察,第二种解决方案似乎更好,但我不知道如何确定监视元素:
$scope.$watch(function() {
return service.var1 + service.var2 + service.var3; },
function callback(new,old) {
var changed = ;//?here how to determine which variable changed
switch ( changed ) {
case 'var1' : $scope.function1();break;
case 'var2' : $scope.function2();break;
case 'var3' : $scope.function3();break; }
})
如何在 Angular 中实现对监视变量的委托?
我更喜欢你使用的第二种方式,但应该有 $$watchGroup
代码
$scope.$watchGroup(['service.var1', 'service.var2', 'service.var3'],
function(newVal, oldVal) {
var changed = ''
if (newVal[0] != oldVal[0])
changed = 'var1';
if (newVal[1] != oldVal[1])
changed = 'var2';
if (newVal[2] != oldVal[2])
changed = 'var3';
switch (changed) {
case 'var1':
$scope.function1();
break;
case 'var2':
$scope.function2();
break;
case 'var3':
$scope.function3();
break;
}
});
有关更多信息,请参阅 ,其中解释相同。
哪种解决方案最好。在控制器中为每个数据设置三个手表,并相应地设置不同的方法或为所有三个变量设置一个手表,然后检查哪个改变了和运行指定的方法。
寓言事件处理,最好是在父对象上委托事件,然后根据指定的事件委托dom的部分。如果angular允许这样观看,如何实现?
基本解决方案很简单,但需要三个手表:
$scope.$watch(function() {
return service.var1;
},
function callback(new,old) {
$scope.function1();
});
$scope.$watch(function() {
return service.var2;
},
function callback(new,old) {
$scope.function2();
});
$scope.$watch(function() {
return service.var3;
},
function callback(new,old) {
$scope.function3();
});
根据事件观察,第二种解决方案似乎更好,但我不知道如何确定监视元素:
$scope.$watch(function() {
return service.var1 + service.var2 + service.var3; },
function callback(new,old) {
var changed = ;//?here how to determine which variable changed
switch ( changed ) {
case 'var1' : $scope.function1();break;
case 'var2' : $scope.function2();break;
case 'var3' : $scope.function3();break; }
})
如何在 Angular 中实现对监视变量的委托?
我更喜欢你使用的第二种方式,但应该有 $$watchGroup
代码
$scope.$watchGroup(['service.var1', 'service.var2', 'service.var3'],
function(newVal, oldVal) {
var changed = ''
if (newVal[0] != oldVal[0])
changed = 'var1';
if (newVal[1] != oldVal[1])
changed = 'var2';
if (newVal[2] != oldVal[2])
changed = 'var3';
switch (changed) {
case 'var1':
$scope.function1();
break;
case 'var2':
$scope.function2();
break;
case 'var3':
$scope.function3();
break;
}
});
有关更多信息,请参阅