ligação de modelo personalizado magento2 knockoutjs

12

Estou tentando entender o knockoutjs no magento2.especialmente a ligação de modelos personalizados. Não consigo obter o fluxo de ideias de renderizar isso.

Alguém pode ter idéia de como funciona? atleast Onde posso encontrar a definição de getTemplate?

<!-- ko if: (!quoteIsVirtual) -->
            <!-- ko foreach: getRegion('customer-email') -->
                <!-- ko template: getTemplate() --><!-- /ko -->
            <!--/ko-->
        <!--/ko-->
Sivakumar K
fonte
Aqui está a explicação detalhada sobre knockoutjs em Magento 2 ibnab.com/en/blog/magento-2/...
FireBear

Respostas:

26

Aberto

Magento / Checkout / view / frontend / layout / checkout_index_index.xml
Arquivo. veja a seguinte linha

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

então

Magento / Checkout / view / frontend / web / js / view / shipping.js
este é o seu arquivo js. Abra. Veja
template: 'Magento_Checkout / shipping'
este é o arquivo de modelo para este JS.

Volte para

Magento / Checkout / view / frontend / layout / checkout_index_index.xml
linha 122 (M2 2.0.0-rc)
<nome do item = "children" xsi: type = "array">
aqui você pode ver algum nó filho. gostar

<nome do item = "email do cliente" xsi: type = "array">
----
---
</item>

então

getTemplate ()
é responsável pela renderização atual do modelo, o que significa

Magento / Checkout / view / frontend / web / template / formulário / elemento / email.html

Abra-o e veja o seguinte snippet de código


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

esse nó 'campo de formulário de login adicional' é o nó filho de 'email do cliente'.

Para o seu snippet de código, se a cotação não for virtual, escolha ko

foreach: getRegion ('email do cliente')
que é o nome do nó filho e renderiza seu modelo.

Sohel Rana
fonte
getRegion ('email do cliente') significa <nome do item = "email do cliente" xsi: type = "array">. Está correto? Quero dizer, iterará nós filhos disso.
precisa
é renderizar apenas o modelo atual. Eu atualizei a resposta.
Sohel Rana
obrigado pela sua resposta. tantas vezes na equipe xml ..core usando <item name = "component" xsi: type = "string"> uiComponent </item> .so qual arquivo js considera neste caso?
precisa
sim. veja o seguinte arquivo Magento / Ui / view / base / requirejs-config.js. aqui uiComponent é declarado como js.
Sohel Rana
Como obter o URl do site, Checkoutpageurl em qualquer modelo de knockout?
Arun Karnawat
1

Você pode encontrar a definição de getTemplate em,

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

arquivo da linha n. 255 a 257.

  getTemplate: function () {
                return this.template;
            }
Rakesh Jesadiya
fonte
código acima com base na disponibilidade geral do magento 2.0.0.
Rakesh Jesadiya