magento2 knockoutjs reliure de modèle personnalisé

12

J'essaie de comprendre knockoutjs dans magento2.En particulier la liaison de modèles personnalisés.Je ne suis pas en mesure d'obtenir un flux d'idées pour le rendre.

Quelqu'un peut-il avoir une idée de comment cela fonctionne? atleast Où puis-je trouver la définition de getTemplate?

<!-- ko if: (!quoteIsVirtual) -->
            <!-- ko foreach: getRegion('customer-email') -->
                <!-- ko template: getTemplate() --><!-- /ko -->
            <!--/ko-->
        <!--/ko-->
Sivakumar K
la source
Voici une explication détaillée des knockoutjs dans Magento 2 ibnab.com/en/blog/magento-2/…
FireBear

Réponses:

26

Ouvert

Magento / Checkout / view / frontend / layout / checkout_index_index.xml
fichier. regardez la ligne suivante

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

Donc

Magento / Checkout / view / frontend / web / js / view / shipping.js
c'est votre fichier js. Ouvrez-le. Regardez
modèle: 'Magento_Checkout / expédition'
c'est le fichier modèle pour ce JS.

Revenir à

Magento / Checkout / view / frontend / layout / checkout_index_index.xml
ligne 122 (M2 2.0.0-rc)
<item name = "children" xsi: type = "array">
ici, vous pouvez voir un nœud enfant. comme

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

Donc

getTemplate ()
est responsable du rendu du modèle actuel, ce qui signifie

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

Ouvrez-le, puis vous pouvez voir l'extrait de code suivant


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

ce nœud «champs de formulaire de connexion supplémentaires» est le nœud enfant de «e-mail client».

Pour votre extrait de code, si le devis n'est pas virtuel, choisissez ko

foreach: getRegion ('email client')
qui est le nom du nœud enfant et rend son modèle.

Sohel Rana
la source
getRegion ('email client') signifie <item name = "email client" xsi: type = "array">. Est-ce correct? je veux dire qu'il va itérer les nœuds enfants de cela.
Sivakumar K du
son rendu uniquement le modèle actuel. J'ai mis à jour la réponse.
Sohel Rana
merci pour votre response.so plusieurs fois dans l'équipe xml ..core en utilisant <item name = "component" xsi: type = "string"> uiComponent </item> .so quel fichier js considérer dans ce cas?
Sivakumar K du
Oui. regardez le fichier suivant Magento / Ui / view / base / requirejs-config.js. ici uiComponent est déclaré comme js.
Sohel Rana
Comment obtenir Site URl, Checkoutpageurl dans l'un des modèles de knockout?
Arun Karnawat
1

Vous pouvez trouver la définition de getTemplate à partir de,

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

fichier de la ligne no. 255 à 257.

  getTemplate: function () {
                return this.template;
            }
Rakesh Jesadiya
la source
ci-dessus basé sur la disponibilité générale de magento 2.0.0.
Rakesh Jesadiya