Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当一个值更改时,如何更改另一个值_Javascript_Angularjs - Fatal编程技术网

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,但你知道我有循环参考。。。