magento2 knockoutjs custom template binding

12

Saya mencoba memahami knockoutjs di magento2.espengikat templat khusus. Saya tidak bisa mendapatkan ide aliran rendering ini.

Adakah yang tahu cara kerjanya? atleast Di mana saya dapat menemukan definisi getTemplate?

<!-- ko if: (!quoteIsVirtual) -->
            <!-- ko foreach: getRegion('customer-email') -->
                <!-- ko template: getTemplate() --><!-- /ko -->
            <!--/ko-->
        <!--/ko-->
Sivakumar K
sumber
Berikut adalah penjelasan terperinci tentang knockoutjs di Magento 2 ibnab.com/en/blog/magento-2/…
FireBear

Jawaban:

26

Buka

Magento / Checkout / view / frontend / layout / checkout_index_index.xml
mengajukan. lihat baris berikut

<item name = "component" xsi: type = "string"> Magento_Checkout / js / view / shipping </item>

Begitu

Magento / Checkout / view / frontend / web / js / view / shipping.js
ini adalah file js Anda. Buka. Lihat
templat: 'Magento_Checkout / pengiriman'
ini adalah file templat untuk JS ini.

Kembali ke

Magento / Checkout / view / frontend / layout / checkout_index_index.xml
line 122 (M2 2.0.0-rc)
<item name = "children" xsi: type = "array">
di sini Anda dapat melihat beberapa simpul anak. Suka

<item name = "customer-email" xsi: type = "array">
----
---
</item>

Begitu

getTemplate ()
bertanggung jawab atas rendering template saat itu yang berarti

Magento / Checkout / view / frontend / web / template / form / elemen / email.html

Buka, lalu Anda bisa melihat cuplikan kode berikut


<!-- ko foreach: getRegion('additional-login-form-fields') -->
            <!-- ko template: getTemplate() --><!-- /ko -->
            <!-- /ko -->

simpul 'bidang-masuk-bentuk-tambahan' ini adalah simpul turunan dari 'email-pelanggan'.

Untuk cuplikan kode Anda, jika kutipan tidak virtual maka pilih ko

foreach: getRegion ('email-pelanggan')
yang merupakan nama simpul anak dan render templatnya.

Sohel Rana
sumber
getRegion ('email pelanggan') berarti <item name = "email pelanggan" xsi: type = "array">. Apakah itu benar? maksud saya itu akan mengulangi node anak itu.
Sivakumar K
hanya membuat template saat ini. Saya memperbarui jawabannya.
Sohel Rana
terima kasih atas respons Anda. berkali-kali dalam xml ..core tim menggunakan <item name = "component" xsi: type = "string"> uiComponent </item> .so file mana yang dipertimbangkan dalam kasus ini?
Sivakumar K
Iya. lihat file berikut Magento / Ui / view / base / requireejs-config.js. di sini uiComponent dinyatakan sebagai js.
Sohel Rana
Bagaimana cara mendapatkan Situs URl, Checkoutpageurl di salah satu templat knockout?
Arun Karnawat
1

Anda dapat menemukan definisi getTemplate dari,

`root\vendor\magento\module-ui\view\base\web\js\lib\core\element\element.js` 

file dari baris no. 255 hingga 257.

  getTemplate: function () {
                return this.template;
            }
Rakesh Jesadiya
sumber
kode di atas berdasarkan ketersediaan umum magento 2.0.0.
Rakesh Jesadiya