Javascript 当一个值更改时,如何更改另一个值
例如,我有这样的代码:Javascript 当一个值更改时,如何更改另一个值,javascript,angularjs,Javascript,Angularjs,例如,我有这样的代码: scope.people; scope.agedPeople; 如果人们重视变化,我需要这样做: scope.agedPeople = scope.people * 0.3; scope.people = scope.agedPeople / 0.3; 如果agedPeople值发生变化,我需要这样做: scope.agedPeople = scope.people * 0.3; scope.people = scope.agedPeople / 0.3; 我想
scope.people;
scope.agedPeople;
如果人们重视变化,我需要这样做:
scope.agedPeople = scope.people * 0.3;
scope.people = scope.agedPeople / 0.3;
如果agedPeople值发生变化,我需要这样做:
scope.agedPeople = scope.people * 0.3;
scope.people = scope.agedPeople / 0.3;
我想用$watch,但正如你看到的,我有循环引用。。。我是这样解决的:
scope.checkIsPeopleCounted = function() {
var countedPeople;
countedPeople = scope.agedPeople * 0.3;
return countedPeople === scope.people;
};
scope.checkIsAgedPeopleCounted = function() {
var countedAgedPeople;
countedAgedPeople = scope.people / 0.3;
return countedAgedPeople === scope.agedPeople;
};
scope.$watch('people', function() {
!scope.checkIsAgedPeopleCounted() && (scope.agedPeople = scope.people / 0.3);
});
scope.$watch('agedPeople', function() {
!scope.checkIsPeopleCounted() && (scope.people = scope.agedPeople * 0.3);
});
但是看起来不太好。也许还有别的解决办法
如何使它有棱角
scope.$watch("people",function(){
scope.agedPeople = scoped.people * 0.3;
});
对老年人来说也是一样,没有更多的信息有点难。但从理论上讲,你可以像这样观察范围内的值:
$scope.$watch('agedPeople', function(newValue, oldValue){});
有关范围,请参阅文档。$watch:
但在你的情况下,你有一个循环引用。您可以通过向返回结果的范围添加方法来解决这个问题
var MULTIPLIER = .3;
$scope.agedPeople = 1;
$scope.people = 1;
$scope.getAgedPeople = function () {
return $scope.people * MULTIPLIER;
};
$scope.getPeople = function () {
return $scope.agedPeople * MULTIPLIER;
};
我希望这有帮助 请出示你试过的东西@@因此,当
人
发生变化时,您需要改变年龄人群
。然后再改变人
,因为老年人
改变了。然后改变agedPeople
…如果他们被用于输入字段,那么选择ng change
比$watch
好得多。是的,这不会导致无休止的相互改变循环吗?是的,问题是我有一个循环引用。我想用$watch,但你知道我有循环参考。。。