2017-08-17 17 views
9

Tôi có ứng dụng Aurelia với kiểu xem đơn lẻ. Chế độ xem tương tự như trình duyệt tệp, với chế độ xem dạng cây (phần tử tùy chỉnh) ở bên trái và chế độ xem danh sách ở bên phải. Kiểu xem activationStrategyinvokeLifecycle và chế độ xem danh sách được điền dựa trên thông số tuyến đường. Chế độ xem dạng cây được điền bằng các cuộc gọi AJAX khi nút được mở rộng. Các nút cây cũng là một phần tử tùy chỉnh. Chế độ xem dạng cây hoàn toàn tùy chỉnh và không sử dụng bất kỳ plugin của bên thứ ba nào.Aurelia: phần tử tùy chỉnh tĩnh ở chế độ xem đơn lẻ

Khi người dùng điều hướng đến một tuyến đường khác và sau đó quay trở lại cùng một tuyến đường, mô hình chế độ xem được giữ lại vì nó là một đơn. Tuy nhiên, chế độ xem dạng cây không phải vì các phần tử tùy chỉnh không được hỗ trợ như đơn.

Tôi hiểu lý do đằng sau việc không hỗ trợ các thành phần tùy chỉnh singleton. Tuy nhiên, tôi muốn biết cách tiếp cận tốt nhất để bằng cách nào đó tạo ra một khung nhìn cây "tĩnh" khi điều hướng trở lại cùng một tuyến đường. Điều duy nhất tôi đã đưa ra cho đến nay, là giữ một cấu trúc cây đầy đủ (mở rộng) ở trạng thái chia sẻ được tiêm. Tuy nhiên, điều đó dường như không hiệu quả với tôi, vì khung nhìn cây sẽ phải render lại không có lý do gì, và nó phức tạp mã của tôi một cách không cần thiết với các lớp và logic được thêm vào để tạo cấu trúc cây trong khi cấu trúc cây đã được ẩn trong phần tử tùy chỉnh.

Bất kỳ đầu vào nào được đánh giá cao.

+0

Tôi không tin rằng có một cách để không hiển thị lại thành phần tùy chỉnh sau khi rời khỏi và quay lại. Khi bạn rời khỏi trang, các phần tử được tách ra. Nếu bạn trở lại, họ được đính kèm một lần nữa. –

Trả lời

2

Cách tiếp cận của tôi là đặt phần tử tùy chỉnh chế độ xem dạng cây trên app.html giống như nav-bar (bên ngoài .page-host) trong navigation-skeleton. Sau đó, phần tử tùy chỉnh sẽ không được hiển thị lại bằng cách thay đổi tuyến đường.

Dường như một tình huống tương tự, giống như trường hợp bạn có, được mô tả trong tài liệu Aurelia. Tham khảo this tutorial. Cũng từ hướng dẫn:

Cung cấp router-view bởi Aurelia và là trình giữ chỗ cho biết bộ định tuyến sẽ hiển thị tuyến đường hiện tại ở đâu.

Trong trường hợp bạn cần thay đổi chế độ xem dạng cây dựa trên một số trường hợp đặc biệt hoặc tuyến đường thì tập hợp sự kiện có thể được sử dụng trong phần tử tùy chỉnh dạng cây của bạn để xử lý các trường hợp đặc biệt đó. Hướng dẫn này cũng cho thấy việc sử dụng trình tổng hợp sự kiện để đồng bộ hóa các phần tử tùy chỉnh (tham khảo this part).

Hy vọng điều này sẽ hữu ích.

+0

Tôi sẽ trao phần thưởng cho câu trả lời của bạn, mặc dù nó giống như một giải pháp hacky. Tôi đoán kịch bản này là một cái gì đó cho danh sách mong muốn Aurelia. – Carvellis

+0

Ví dụ hướng dẫn bạn đề cập không may không giải quyết được vấn đề, vì nó là một ứng dụng rất đơn giản chỉ với một khung nhìn. Nếu bạn sẽ thêm nhiều chế độ xem và sẽ điều hướng đến một tuyến đường khác, điều tương tự cũng sẽ xảy ra như trong ví dụ của tôi. – Carvellis

+0

@Carvellis Trong dự án của chúng tôi, chúng tôi đang sử dụng mẫu tương tự. Chúng tôi có thanh điều hướng, cũng như thanh điều hướng bên cạnh. Cả hai phần tử này là phần tử tùy chỉnh và được thêm vào trong 'app.html' như một phần tử tùy chỉnh chuẩn, bên ngoài phần tử' router-view'. Và những yếu tố này là bất khả tri để định tuyến thay đổi. Cụ thể hơn, các phần tử chỉ được kích hoạt một lần. Đó là lý do tại sao chúng tôi cũng đang sử dụng trình tổng hợp sự kiện để đồng bộ hóa các thay đổi. Tuy nhiên, rất khó để tôi bình luận thêm về điều này mà không có các chi tiết cụ thể về yếu tố của bạn. –

Các vấn đề liên quan