Новый шаблон сеточной системы Magento 2
-
13-12-2019 - |
Вопрос
Я изучал новую серверную сетку Magento в бета-версии Merchant 1.0.0.
Прежде всего, я должен сказать, что я впечатлен.
Теперь вы можете выбирать столбцы для просмотра, менять их порядок и фильтровать по атрибутам, которые не обязательно имеют столбец.
Но это не важно.
Я не понимаю, как отображается сетка.
Включив подсказки по пути к шаблону, я увидел, что, например, сетка продуктов отображается с помощью шаблона. app/code/Magento/Ui/view/base/ui_component/templates/listing/default.xhtml
и через блок Magento\Ui\Component\Listing
.
Я отредактировал шаблон и увидел кое-что, чего не понимаю.
<!-- ko template: getTemplate() --><!-- /ko -->
Если я удалю эту строку (и очистлю кеш, если он включен), я больше не получу сетку.
Может кто-нибудь объяснить, что это ko
есть и как это работает?.
Я также встречаю такую разметку в других шаблонах. app/code/Magento/Ui/view/base/web/templates/grid/controls/columns.html
например.
[ОБНОВЛЯТЬ]
Я только что узнал с помощью простого поиска (ага!), что ko
относится к этому: http://knockoutjs.com/ но мне все еще нужны некоторые объяснения.
Решение
Похоже, Magento 2 использует Нокаут.js, инфраструктура MVVM, которая использует привязки данных HTML (а в некоторых случаях комментарии HTML, подобные тому, который вы нашли) для связи модели и представления.
Здесь этот комментарий представляет собой виртуальный элемент, «шаблон», вероятно, пользовательскую привязку из Magento (см.: http://knockoutjs.com/documentation/custom-bindings-for-virtual-elements.html), getTemplate()
очевидно, это функция JavaScript, которая отвечает за отображение реального элемента(ов).
Чтобы понять нокаут, просмотрите интерактивное руководство на сайте Knockoutjs.com, оно мне легко понять, а руководство и документация действительно великолепны.