Frontmatter
| id | 8304 |
| title | [Neural Link] Deep Value Collection for form.Container.toJSON |
| state | Closed |
| labels | enhancementai |
| assignees | tobiu |
| createdAt | Jan 3, 2026, 10:12 PM |
| updatedAt | Jan 3, 2026, 10:22 PM |
| githubUrl | https://github.com/neomjs/neo/issues/8304 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | 8200 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Jan 3, 2026, 10:22 PM |
[Neural Link] Deep Value Collection for form.Container.toJSON

Input from Gemini 2.5 pro:
✦ I have verified the implementation logic again.
Neo.manager.Componentinherits fromNeo.collection.Base, so it holds a global registry of all instantiated components in itsitemsarray. ThegetChildComponentsmethod usesthis.find('parentId', component.id)to query this global registry. It does not rely on the localitemsconfig of the component instance.Because
getChildComponentsrecursively queries the global registry forparentIdmatches, it correctly traverses the entire component tree (includingTabContainer->TabBody->Fieldchains) as long as the components are instantiated and registered.Therefore,
form.Container.toJSONis already performing a deep, recursive collection of all field values in the form.Closing as implemented/duplicate of the logic in #8296.
Enhance
Neo.form.Container.toJSONto support deep value collection for nested forms (e.g. fields inside TabContainers or CardLayouts).Current State:
toJSONcurrently usesComponentManager.getChildComponents(this)which relies on theparentIdchain. This works for standard nesting but might miss edge cases where components are visually nested but logically detached (e.g. via vdom references without parentId updates).Goal: Ensure
toJSONcaptures the values of ALL fields that are logically part of the form, regardless of nesting depth, matching the scope ofgetSubmitValues()but remaining synchronous and read-only.Implementation Idea:
getChildComponentscovers all needed cases.