|
665 | 665 | */
|
666 | 666 | this.asyncState = false;
|
667 | 667 |
|
| 668 | + /* |
| 669 | + Логика такая: все виды должны себя ВСЕГДА добавлять. |
| 670 | + Иначе может получиться странная ситуация: |
| 671 | + Есть вид v1, он зависит от модель m1. Он валиден. |
| 672 | + Есть вид v2, он зависит от модели m2. Он невалиден. |
| 673 | +
|
| 674 | + v1 не сообщает свои модели, а v2 сообщает. |
| 675 | + В ns.request уходят знания только про m2. |
| 676 | +
|
| 677 | + Допустим в процессе запроса m2 кто-то инвалидировал модель m1. |
| 678 | + Про ее необходимость никто не знает, |
| 679 | + соответственно дело нормальным способом дойдет до отрисовки, |
| 680 | + где m1 будет перерисован как error-content |
| 681 | + */ |
| 682 | + |
668 | 683 | if (this.async) {
|
669 | 684 | var hasValidModels = this.isModelsValid();
|
670 |
| - var hasValidStatus = this.isOk(); |
671 | 685 |
|
672 | 686 | // shouldBeSync - специальный флаг, чтобы вид отрисовался
|
673 | 687 | // раньше это работало так,
|
674 | 688 | // update параллельно запрашивал модели для синхронных видов и асинхронных
|
675 | 689 | // поэтому когда запускался update для асинхронных модели уже были готовы и hasValidModels === true
|
676 |
| - if (this.shouldBeSync || (hasValidModels && !hasValidStatus)) { |
| 690 | + if (this.shouldBeSync || hasValidModels) { |
677 | 691 | // если асинхронный блок имеет валидные модели, но невалидный статус - рисуем его синхронно
|
678 | 692 | updated.sync.push(this);
|
679 | 693 |
|
680 |
| - } else if (!hasValidModels) { |
| 694 | + } else { |
681 | 695 | this.asyncState = true;
|
682 | 696 | // если асинхронный блок имеет невалидные модели, то его не надо рисовать сразу
|
683 | 697 | updated.async.push(this);
|
684 | 698 | // прекращаем обработку
|
685 | 699 | return updated;
|
686 | 700 | }
|
687 |
| - } else if (!this.isValidSelf()) { |
688 |
| - // реинвалидируем дочерние виды, |
689 |
| - // потому что их тоже придется перерисовать вместе с родителем |
690 |
| - this.invalidate(); |
| 701 | + } else { |
| 702 | + |
| 703 | + if (!this.isValidSelf()) { |
| 704 | + // реинвалидируем дочерние виды, |
| 705 | + // потому что их тоже придется перерисовать вместе с родителем |
| 706 | + this.invalidate(); |
| 707 | + } |
691 | 708 |
|
692 | 709 | // если обычный блок не валиден
|
693 | 710 | updated.sync.push(this);
|
|
0 commit comments