Xét rằng bạn có tình trạng này:Có vấn đề về phạm vi nếu tôi di chuyển một phần tử từ vùng chứa này sang vùng chứa khác không?
<div class="site-frame">
<div class="auxiliary"></div>
<div class="main" ui-view>
<div class="componentA">
</div>
<div class="componentB" move-to=".auxiliary" breakpoints="1,2,3,4">
<!-- CONTENTS OF componentB -->
</div>
<div class="componentC">
</div>
</div>
</div>
Yếu tố .componentB
có một chỉ thị gọi là move-to
mà chỉ cần di chuyển các nội dung của nguyên tố này, thu thập chúng với trẻ em jQuery selector đại diện (như var contents = $('.componentB').find('> *');
), khi bất kỳ những điểm ngắt này, được định nghĩa trên chỉ thị breakpoints
(những con số này là các chỉ mục của một mảng, giữ các phép đo điểm ngắt) hiện đang xảy ra.
Khi một số breakpoint của chỉ thị đang hoạt động, sự thay đổi DOM này:
<div class="site-frame">
<div class="auxiliary">
<!-- CONTENTS OF componentB -->
</div>
<div class="main" ui-view>
<div class="componentA">
</div>
<div class="componentB" move-to=".auxiliary" breakpoints="1,2,3,4">
</div>
<div class="componentC">
</div>
</div>
</div>
Đây là một cơ chế phản ứng đang được sử dụng trong một phiên bản tĩnh của một trang web mà tôi đang đối phó với. Những gì tôi cần là để biết nếu có sai sót với thừa kế phạm vi, phát sóng sự kiện, điều khiển trạng thái, mà đang được liên quan đến div.main
, mà chính nó là anh chị em của div.auxiliary
.
Tự hỏi về góc làm việc của nó như thế nào, tôi cho rằng lớp logic JS giữ quan hệ giữa phần tử DOM được tham chiếu trên một phạm vi nào đó. Chủ yếu trên các phạm vi chỉ thị, sử dụng các hàm link()
, tự nhiên là post-link()
do đó thao tác DOM an toàn hơn, bởi vì liên kết đã được tạo.
Hãy nhớ rằng tôi giữ tham chiếu về nội dung .componentB
bên trong hàm link()
, trong khi nghe sự kiện $destroy
phạm vi, để xóa mọi thứ, tránh rò rỉ bộ nhớ. Ngoài ra, vì hệ thống này nghe theo số $window.on('resize')
để tìm ra điểm ngắt hiện tại và trong khi điều hướng, có thể nội dung của ví dụ của tôi có thể được di chuyển giữa vùng chứa ban đầu và vùng phụ trợ. Vì vậy, câu hỏi đặt ra là: nếu tôi di chuyển một phần tử thông qua DOM, ngay cả bên ngoài phụ huynh của nó, bạn có thể tiếp tục đếm trên các cập nhật có thể thay đổi về ràng buộc dữ liệu, thừa kế, v.v ... không? Không.
tôi yêu cầu này trước khi thực hiện vì kích thước khổng lồ của ứng dụng, và như mọi khi trên Runnings sản xuất-khôn ngoan, không có chỗ để thảo luận về điều này trước khi ...
Sửa 1:
Tạm thời, CodePen này có nhiều cơ hội hơn: http://codepen.io/anon/pen/JXPvBE?editors=0010
Mã đang làm những gì tôi cần, nhưng tôi cần kiểm tra nó trong ứng dụng cuối cùng.
Có vẻ như sẽ không khó để tạo ra một trường hợp thử nghiệm đơn giản hợp lý cho chính bạn. Nếu không biết tất cả các phạm vi liên quan và cách ứng dụng tổng thể hoạt động, câu hỏi chính là thực sự rộng. – charlietfl
Tôi đang làm điều này đúng, sẽ cập nhật câu hỏi với một plunker. Nhưng, thực sự, với ứng dụng tôi đang làm việc với, điều này có thể phải đối mặt với một số vấn đề. –
Về cái nhìn rộng lớn của câu hỏi nó thực sự, bởi vì điều này là nghĩa vụ phải làm việc với bất kỳ thành phần, hoặc phần tử nào, bên trong ứng dụng, cả chỉ thị hoặc mã điều khiển liên quan của nhà nước, bạn biết đấy ... –