簡體   English   中英

當一個值改變時如何改變另一個值

[英]when one value changes how to change another value

我有例如這樣的代碼:

scope.people;
scope.agedPeople;

如果人們重視變化,我需要這樣做:

scope.agedPeople = scope.people * 0.3;

而且,如果ageedPeople值發生變化,我需要這樣做:

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('agedPeople', function(newValue, oldValue){});

請參閱Scope。$ watch文檔Angular Scope。$ watch文檔

但是在您的情況下,您有一個循環引用。 您可以通過將方法添加到返回結果的范圍中來解決此問題。

var MULTIPLIER = .3;
$scope.agedPeople = 1;
$scope.people = 1;

$scope.getAgedPeople = function () {
  return $scope.people * MULTIPLIER;
};

$scope.getPeople = function () {
  return $scope.agedPeople * MULTIPLIER;
};

希望對您有所幫助!

scope.$watch("people",function(){
    scope.agedPeople = scoped.people * 0.3;
});

對於老年人來說也是一樣

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM