Templat KnockoutJS tingkat atas dari daftar Komponen UI terlihat seperti ini
<!-- File: vendor/magento//module-ui/view/base/web/templates/collection.html -->
<each args="data: elems, as: 'element'">
<render if="hasTemplate()"/>
</each>
Ini diterjemahkan oleh Magento ke dalam kode KnockoutJS mentah berikut.
<!-- ko foreach: {data: elems, as: 'element'} -->
<!-- ko if: hasTemplate() --><!-- ko template: getTemplate() --><!-- /ko --><!-- /ko -->
<!-- /ko -->
Dalam kedua kasus tersebut, templat ini akan foreach
membahas elems
properti model tampilan .
Jika saya melihat modul RequireJS yang (saya pikir>) mengembalikan kelas konstruktor view model
vendor/magento/module-ui/view/base/web/js/lib/core/collection.js
Saya melihat insertChild
metode ini muncul untuk menambah elems
properti.
Apa yang kurang jelas bagi saya adalah: Di mana Magento sebenarnya memanggil insertChild
untuk mengisi elems
dan / atau bagaimana elems
diisi dengan model tampilan yang membentuk koleksi Komponen UI?
magento2
uicomponent
knockoutjs
Alan Storm
sumber
sumber
Jawaban:
Satu-satunya info yang dapat saya temukan adalah
pada saluran 321 dari
Tampaknya ini ada di dalam fungsi yang menggabungkan komponen?
Ini digunakan pada baris 73 (menjalankan fungsi) dari file yang sama (layout.js) di mana ia digunakan untuk menggabungkan node.
Fungsi run ini digunakan dalam 2 fungsi (proses dan penggabungan - keduanya dalam
layout.js
) tetapi saya tidak dapat sepenuhnya mengetahui apa yang mereka lakukan.Memperbarui
Saya baru saja melihat yang berikut di dev docs - http://devdocs.magento.com/guides/v2.1/ui_comp_guide/concepts/ui_comp_uicollection_concept.html
elems adalah properti yang dapat diamati yang berisi koleksi komponen UI anak.
elems adalah kumpulan elemen anak dari uiCollection. Sejauh elem adalah properti yang dapat diamati, templat komponen yang ditambahkan ke elem dalam runtime, juga dirender
sumber