Magento 2: Điều gì làm cho dân tộc elem nổi bật trong một thành phần UI


9

Mẫu KnockoutJS cấp cao nhất của Thành phần UI liệt kê trông như thế này

<!-- File: vendor/magento//module-ui/view/base/web/templates/collection.html -->

<each args="data: elems, as: 'element'">
    <render if="hasTemplate()"/>
</each>

Điều này được Magento dịch thành mã KnockoutJS thô sau đây.

<!-- ko foreach: {data: elems, as: 'element'} -->
    <!-- ko if: hasTemplate() --><!-- ko template: getTemplate() --><!-- /ko --><!-- /ko -->
<!-- /ko -->

Trong cả hai trường hợp, mẫu này sẽ foreachqua thuộc elemstính của mô hình xem .

Nếu tôi nhìn vào mô-đun RequireJS (tôi nghĩ>) trả về lớp hàm tạo của mô hình khung nhìn

vendor/magento/module-ui/view/base/web/js/lib/core/collection.js

Tôi thấy insertChildphương thức xuất hiện để thêm vào elemstài sản.

Điều ít rõ ràng hơn đối với tôi là: Magento thực sự gọi insertChildđể cư trú ở đâu elemsvà / hoặc làm thế nào được elemsphổ biến với các mô hình xem tạo nên một bộ sưu tập các Thành phần UI?


Tôi nghĩ rằng nó được thực hiện ở đây: app / code / Magento / Ui / view / base / web / js / core / renderer / layout.js
ps202

Câu trả lời:


2

Thông tin duy nhất tôi có thể tìm thấy là

registry.get(component.parentName).insertChild(component, val.value);

trên dòng 321 của

vendor/magento/module-ui/view/base/web/js/core/renderer/layout.js

Có vẻ như đây là một chức năng hợp nhất các thành phần?

merge: function (components) {
   ...
}

Điều này được sử dụng trên dòng 73 (chức năng chạy) của cùng một tệp (layout.js) trong đó nó được sử dụng để hợp nhất các nút.

function run(nodes, parent, cached, merge) {
    if (_.isBoolean(merge) && merge) {
        layout.merge(nodes);

        return false;
    }

    if (cached) {
        cachedConfig[_.keys(nodes)[0]] = JSON.parse(JSON.stringify(nodes));
    }

    _.each(nodes || [], layout.iterator.bind(layout, parent));
}

Hàm chạy này được sử dụng trong 2 hàm (xử lý và hợp nhất - cả hai layout.js) nhưng tôi không thể tìm ra chúng hoàn toàn làm gì.

Cập nhật

Tôi vừa thấy những điều sau đây trong tài liệu dev - http://devdocs.magento.com/guides/v2.1/ui_comp_guide/con accept / ui_comp_uicollection_concept.html

elems là thuộc tính có thể quan sát có chứa bộ sưu tập các thành phần UI con.

elems là tập hợp các yếu tố con của uiCollection. Theo như elems là thuộc tính có thể quan sát được, các mẫu của các thành phần được thêm vào elems trong thời gian chạy, cũng được hiển thị

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.