Giả sử tôi bị ràng buộc là có trang web có thể truy cập sẽ được tham vấn với JS bị vô hiệu hóa.Làm thế nào để tăng cường tiến bộ trên danh sách HTML với angularjs?
tôi có một danh sách tin tức mà tôi có thể tóm tắt như sau:
<ul>
<li>News 1</li>
<li>News 2</li>
<li>News 3</li>
</ul>
Mỗi lần bạn tải lại trang, bạn sẽ có được những tin tức mới nhất thêm vào, và cái cũ sẽ bị loại bỏ nếu bạn có nhiều hơn 10 tin tức .
Bây giờ, nếu tôi sử dụng JS Angulard, tôi phải đưa dữ liệu vào một mô hình và lặp lại, và loại bỏ HTML tĩnh của tôi. Danh sách sẽ được điền động, vì vậy những người có JS sẽ thấy danh sách được cập nhật trong thời gian gần như thực.
Điều tôi cần là làm cho cả hai hoạt động cùng nhau. Tôi cần danh sách tĩnh và nếu JS được kích hoạt, tôi muốn các phần tử hiện tại được chèn vào mô hình và quản lý bởi angularjs.
Bây giờ cách hiện tại của tôi để làm điều đó là:
- khi mô hình của tôi khởi tạo, parthe danh sách DOM, trích xuất các dữ liệu bằng tay, và loại bỏ tất cả các danh sách con
- tiêm góc mẫu mã trong danh sách
- hãy góc làm nó kỳ diệu
It sucks vì bạn mất sự tốt lành declarative của góc, ngoài ra bạn có rất nhiều mã nồi hơi là được thậm chí không chung chung, vì vậy bạn viết lại nó cho eve tiện ích ry trong trang của bạn.
Tôi sẽ chỉ ẩn html tĩnh và hiển thị DOM góc khi javascript được bật. Bạn sẽ cần phải chèn mô hình js tương đương với html tĩnh mà bạn tạo ra, nó không thực sự tốt đẹp nhưng cố gắng để có được dữ liệu ban đầu từ DOM sẽ khó khăn hơn để duy trì IMHO. Trong một thế giới hoàn hảo, bạn sẽ tạo ra các trang tĩnh với một công cụ javascript và góc trên máy chủ để không phải sao chép mã/mẫu nhưng không có cách nào dễ dàng để làm điều đó atm. – Guillaume86
Nó sẽ không phải là thế giới hoàn hảo của tôi, vì tôi không thích viết mã trong JS :-) Tôi thích cách tiếp cận của bạn (bạn nên làm cho nó một câu trả lời để tôi có thể upvode) bởi vì nó đơn giản và duy trì. Bt có nghĩa là tải lên gấp đôi kích thước của tập dữ liệu, vì vậy chúng tôi chắc chắn không phải trong một thế giới lý tưởng. –
Cảm ơn, tôi sẽ đưa ra một câu trả lời nhỏ với điều đó;) – Guillaume86