2013-06-13 3 views
1

У меня здесь большая проблема.Циклическая зависимость в нокауте

У меня есть вычисленная переменная, которая обновляется после изменения наблюдаемого массива.

Проблема заключается в том, что после вычисления вычисляемой переменной мне нужно изменить значения наблюдаемых массивов с использованием нового вычисленного значения.

Как я могу это сделать?

Мой первый подход состоял в том, чтобы создать функцию, которая будет подписаться на вычисленную переменную и внести все необходимые изменения в наблюдаемую там. Проблема? Это приведет к тому, что наблюдаемое снова будет обновляться, и это снова сообщит о вычислении.

У меня есть круговая зависимость.

Я понятия не имею, как это решить.

Любые идеи, пожалуйста?

+4

Можете ли вы разместить свой код? Я действительно смущен, почему вычисленный * хотел бы * обновить одну из своих зависимостей. Это звучит неправильно. – Tyrsius

+0

да почтовый индекс. Часто круговые зависимости являются ошибкой проектирования. – Brandon

+1

Knockoutjs имеет меры предосторожности против круговых ссылок, поэтому он просто работает из коробки, см .: http://jsfiddle.net/mPpcR/1/. Но это зависит от ваших фактических расчетов, если результат * правильный *. – 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..... 
         }); 
        } 
       }); 
      }); 
     }); 
Смежные вопросы