O modelo KnockoutJS de nível superior da lista Componente da UI é semelhante a este
<!-- File: vendor/magento//module-ui/view/base/web/templates/collection.html -->
<each args="data: elems, as: 'element'">
<render if="hasTemplate()"/>
</each>
Isso é traduzido pelo Magento no seguinte código KnockoutJS bruto.
<!-- ko foreach: {data: elems, as: 'element'} -->
<!-- ko if: hasTemplate() --><!-- ko template: getTemplate() --><!-- /ko --><!-- /ko -->
<!-- /ko -->
Nos dois casos, esse modelo foreach
substituirá a elems
propriedade do modelo de exibição .
Se eu olhar para o módulo RequireJS que (acho>) retorna a classe construtora do modelo de exibição
vendor/magento/module-ui/view/base/web/js/lib/core/collection.js
Vejo que o insertChild
método parece adicionar à elems
propriedade.
O que é menos claro para mim é: para onde o Magento realmente liga insertChild
para preencher elems
e / ou como é elems
preenchido com os modelos de exibição que compõem uma coleção de componentes da interface do usuário?
magento2
uicomponent
knockoutjs
Alan Storm
fonte
fonte
Respostas:
A única informação que posso encontrar é
na linha 321 de
Parece que isso está dentro de uma função que mescla componentes?
Isso é usado na linha 73 (função de execução) do mesmo arquivo (layout.js) em que é usado para mesclar nós.
Essas funções de execução são usadas em 2 funções (processo e mesclagem - ambas em
layout.js
), mas não consigo entender completamente o que elas fazem.Atualizar
Acabei de ver o seguinte nos documentos do desenvolvedor - http://devdocs.magento.com/guides/v2.1/ui_comp_guide/concepts/ui_comp_uicollection_concept.html
elems é a propriedade observável que contém a coleção de componentes de interface do usuário filho.
elems é a coleção dos elementos filhos do uiCollection. Quanto elems é a propriedade observável, os modelos dos componentes adicionados aos elems no tempo de execução também são renderizados
fonte