2012-11-06 25 views
5

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.

+0

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

+0

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. –

+0

Cảm ơn, tôi sẽ đưa ra một câu trả lời nhỏ với điều đó;) – Guillaume86

Trả lời

1

Đó là một câu hỏi hay mà tôi đã vượt qua khi sử dụng một số khung công tác js.

Hiện tại, tôi 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 bạn tạo, nó không thực sự đẹp (không phải DRY) nhưng cố gắng lấy dữ liệu ban đầu từ DOM sẽ khó duy trì IMHO hơn. Bạn có thể gộp tất cả javascript/mẫu trong một tệp js, theo cách đó trang tĩnh sẽ chỉ có một lần nhập tập lệnh và trọng lượng trang sẽ không bị ảnh hưởng đối với người xem noscript.

+0

Bạn có nghĩ rằng nó có thể thực hiện được để tạo một plugin có thể đánh dấu ban đầu được đánh dấu bằng các lớp somes và tải nó tự động trong một mô hình không? Bằng cách này tôi có thể giải quyết vấn đề của mình và chia sẻ vấn đề đó với người khác. Nhưng tôi không muốn dành thời gian cho nó nếu nó không thể làm được. –

+0

Có thể thực hiện được nhưng tôi không nghĩ rằng việc đầu tư thời gian đáng giá so với sự đơn giản chỉ hiển thị trong trang một đối tượng json chứa dữ liệu mô hình ban đầu của bạn. – Guillaume86

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