magento2 knockoutjs benutzerdefinierte Vorlagenbindung

12

Ich versuche, knockoutjs in magento2 zu verstehen, insbesondere das Binden von benutzerdefinierten Vorlagen.

Kann jemand eine Idee haben, wie es funktioniert? atleast Wo finde ich die Definition von getTemplate?

<!-- ko if: (!quoteIsVirtual) -->
            <!-- ko foreach: getRegion('customer-email') -->
                <!-- ko template: getTemplate() --><!-- /ko -->
            <!--/ko-->
        <!--/ko-->
Sivakumar K
quelle
Hier finden Sie eine detaillierte Erklärung zu Knockoutjs in Magento 2 ibnab.com/de/blog/magento-2/…
FireBear,

Antworten:

26

Öffnen

Magento / Checkout / view / frontend / layout / checkout_index_index.xml
Datei. sieh dir die folgende Zeile an

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

So

Magento / Checkout / view / frontend / web / js / view / shipping.js
das ist deine js datei. Öffne es. Aussehen
Vorlage: 'Magento_Checkout / Versand'
Dies ist die Vorlagendatei für diese JS.

Geh zurück zu

Magento / Checkout / view / frontend / layout / checkout_index_index.xml
Linie 122 (M2 2.0.0-rc)
<item name = "children" xsi: type = "array">
Hier können Sie einige untergeordnete Knoten sehen. mögen

<item name = "Kunden-E-Mail" xsi: type = "array">
----
---
</ item>

So

getTemplate ()
ist verantwortlich für das aktuelle Template-Rendering

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

Öffne es, dann siehst du folgendes Code-Snippet


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

Dieser Knoten "Zusätzliche Anmeldeformulare" ist der untergeordnete Knoten von "Kunden-E-Mail".

Wenn das Zitat für Ihr Code-Snippet nicht virtuell ist, wählen Sie ko

foreach: getRegion ('Kunden-Email')
Dies ist der Name des untergeordneten Knotens, und die Vorlage wird gerendert.

Sohel Rana
quelle
getRegion ('Kunden-E-Mail') bedeutet <Elementname = "Kunden-E-Mail" xsi: type = "Array">. Ist es richtig? Ich meine, es wird untergeordnete Knoten davon durchlaufen.
Sivakumar K
Es wird nur die aktuelle Vorlage gerendert. Ich habe die Antwort aktualisiert.
Sohel Rana,
vielen dank für deine antwort.so oft im xml ..core team mit <item name = "component" xsi: type = "string"> uiComponent </ item>.
Sivakumar K
Ja. Schauen Sie sich die folgende Datei an: Magento / Ui / view / base / requirejs-config.js. Hier wird uiComponent als js deklariert.
Sohel Rana,
Wie bekomme ich Site URl, Checkoutpageurl in eine der Knockout-Vorlagen?
Arun Karnawat
1

Sie finden die Definition von getTemplate unter,

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

Datei aus Zeile Nr. 255 bis 257.

  getTemplate: function () {
                return this.template;
            }
Rakesh Jesadiya
quelle
Der obige Code basiert auf der allgemeinen Verfügbarkeit von Magento 2.0.0.
Rakesh Jesadiya