[英]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.