2013-06-13 2 views
1

큰 문제가 있습니다.녹아웃의 순환 종속성

관찰 가능한 배열에서 변경된 후에 업데이트되는 계산 된 변수가 있습니다.

계산 된 변수를 계산 한 후에 새로운 계산 된 값을 사용하여 관찰 가능 배열 값을 변경해야한다는 점이 문제입니다.

어떻게하면됩니까?

내 첫 번째 접근 방식은 계산 된 변수에 가입하고 거기에 관찰 할 수있는 모든 내용을 변경하는 함수를 만드는 것이 었습니다. 문제? 그러면 observable이 다시 업데이트되고 이로 인해 계산 결과가 다시 통지됩니다.

나는 순환 의존성을 가지고있다.

나는 이것을 어떻게 해결해야할지 모르겠다.

어떤 아이디어로주세요?

+4

코드를 게시 할 수 있습니까? 왜 계산 결과가 종속물 중 하나를 업데이트하려고하는지 혼란 스럽습니다. 그것은 단지 잘못된 것처럼 들립니다. – Tyrsius

+0

예 우편 코드. 종종 순환 종속성은 설계 오류입니다. – Brandon

+1

Knockoutjs는 순환 참조에 대한 예방 조치를 가지고 있으므로, 상자 밖에서 작동합니다. http://jsfiddle.net/mPpcR/1/. 그러나 결과가 * correct *이면 실제 계산에 따라 다릅니다. – mhu

답변

0

나는 구독을 사용하여 이런 종류의 문제를 해결했습니다. 나는 각각 관찰 할 수있는 두 개의 관찰 가능한 배열을 가졌다. 나는 다른 사람을 구독했고 그것이 나를 위해 일했다. 다음은 관찰 가능한 배열을 통해 구독하는 방법에 대한 샘플입니다.

self.teams.subscribe(function() { 
      ko.utils.arrayForEach(self.teams(), function(item) { 
       item.player.subscribe(function(newValue) { 
        if (self.teams() != "" && self.teams() != null) { 
         ko.utils.arrayForEach(self.GroupofTeams(), function (team) { 
          ..........code..... 
         }); 
        } 
       }); 
      }); 
     });