Magento_Ui / js / lib / knockout / extender / ràng buộc các nút RequireJS làm gì?


8

Mô-đun bootstrap Knockout.js trong Magento 2 bao gồm mô-đun sau thông qua một definephụ thuộc.

 Magento_Ui/js/lib/knockout/extender/bound-nodes

Về mặt kỹ thuật, mô-đun này tạo ra các hàm bao cho các phương thức ko.applyBindingsko.cleanNode. Các trình bao bọc này sẽ chứa các mô hình và nút xem nhất định trong một javascript riêng WeakMap, và sau đó trả về một đối tượng đăng ký duy nhất cho phép bạn truy cập các mục trong WeakMap.

Tuy nhiên, không rõ những tính năng mà người lập trình cuối phải đối mặt với tính năng này cho phép. Có ai ở đây biết các Magento_Ui/js/lib/knockout/extender/bound-nodesmô-đun thực sự là gì? Hoặc là đủ quen thuộc với nội bộ Knockout.js để tìm ra mọi thứ?

Câu trả lời:


2

Về Magento_Ui/js/lib/knockout/extender/bound-nodesmặt lý thuyết, sổ đăng ký sẽ cho phép bạn tìm nạp danh sách các nút HTML-DOM được chỉnh scopedsửa theo mô hình xem cụ thể. tức là bạn sẽ có thể nói điều gì đó như thế này

boundNodes = requirejs('Magento_Ui/js/lib/knockout/extender/bound-nodes');
reg = requirejs('uiRegistry');    
viewModel = reg.get('customer');
console.log( boundNodes.get(viewModel) );

và lấy lại tham chiếu đến linút có phạm vicustomer

<li class="greet welcome" data-bind="scope: 'customer'">
    <!-- ko if: customer().fullname  -->
    <span data-bind="text: new String('Welcome, %1!').replace('%1', customer().firstname)">
    </span>
    <!-- /ko -->
    <!-- ko ifnot: customer().fullname  -->
    <span data-bind="html:'Default welcome msg!'"></span>
    <!-- /ko -->
</li>

Bạn sẽ nhận thấy việc sử dụng lý thuyếtnên . Vấn đề, theo chủ đề diễn đàn cộng đồng này, có một lỗi chưa được phát hiện trong Magento_Ui/js/lib/knockout/extender/bound-nodesmô-đun đang ẩn nấp trong một thời gian . Nó không phải là mã nhánh 2.1.x mà bạn có thể dựa vào.

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.