La plantilla de nivel superior KnockoutJS del listado de componentes de IU se ve así
<!-- File: vendor/magento//module-ui/view/base/web/templates/collection.html -->
<each args="data: elems, as: 'element'">
<render if="hasTemplate()"/>
</each>
Esto es traducido por Magento al siguiente código bruto KnockoutJS.
<!-- ko foreach: {data: elems, as: 'element'} -->
<!-- ko if: hasTemplate() --><!-- ko template: getTemplate() --><!-- /ko --><!-- /ko -->
<!-- /ko -->
En cualquier caso, esta plantilla foreach
sobrepasará la elems
propiedad del modelo de vista .
Si miro el módulo RequireJS que (creo>) devuelve la clase de constructor del modelo de vista
vendor/magento/module-ui/view/base/web/js/lib/core/collection.js
Veo que el insertChild
método parece agregarse a la elems
propiedad.
Lo que es menos claro para mí es: ¿dónde llama realmente Magento insertChild
para poblar elems
y / o cómo se elems
rellena con los modelos de vista que conforman una colección de componentes de la interfaz de usuario?
magento2
uicomponent
knockoutjs
Alan Storm
fuente
fuente
Respuestas:
La única información que puedo encontrar es
en la línea 321 de
Parece que esto está dentro de una función que combina componentes?
Esto se usa en la línea 73 (función de ejecución) del mismo archivo (layout.js) donde se usa para fusionar nodos.
Esta función de ejecución se usa en 2 funciones (proceso y fusión, ambas en
layout.js
), pero no puedo entender completamente lo que hacen.Actualizar
Acabo de ver lo siguiente en los documentos de desarrollo: http://devdocs.magento.com/guides/v2.1/ui_comp_guide/concepts/ui_comp_uicollection_concept.html
elems es la propiedad observable que contiene la colección de componentes secundarios de la interfaz de usuario.
elems es la colección de los elementos secundarios de uiCollection. En cuanto a elems es la propiedad observable, las plantillas de los componentes añadidos a elems en el tiempo de ejecución, también se representan
fuente