2012-04-27 25 views
6

Có vấn đề với một spinner thực sự quay trong khi ember.js đang làm điều đó. Tôi có một ví dụ jsfiddle rất chung chung minh họa vấn đề này:Gif động tạm dừng khi các đối tượng ember.js đang tải

http://jsfiddle.net/h4ZcZ/2/

Tôi giả sử có phải là một cách đơn giản để làm cho công việc này như mong đợi, nhưng tôi không tìm thấy nó. Tôi đã thử sử dụng triển khai JavaScript/CSS của trình quay tròn (spin.js) với cùng kết quả. Tôi thấy một số công cụ cho thấy đây thường là một vấn đề về IE, nhưng đó không phải là trường hợp ở đây. Điều này xảy ra trên tất cả các trình duyệt trên Windows và tôi cũng đã thử nghiệm trên Mac Safari.

+0

Có bao nhiêu mục trong bộ sưu tập của bạn? –

+0

50 mục trong bộ sưu tập là đối tượng Ember.js. Mỗi đối tượng chứa một mảng các đối tượng khác có tổng cộng 6 đối tượng. – BrianB

Trả lời

1

Vấn đề là vòng lặp của bạn - về cơ bản bạn đang khóa luồng. Tôi sẽ sử dụng timeouts và chunk lên công việc phải được thực hiện để cung cấp cho các nhu cầu xử lý khác trên trang khả năng thực thi.

+0

Sự lặp lại mảng không phải là thời gian lớn hút ở đây (hoặc ít nhất nó chỉ là một phần của vấn đề). Việc thực hiện handlebars.js của Ember đang lặp qua các đối tượng itemsController với thẻ {{#each}}. Tôi đã xem xét một số mẫu năng suất bằng cách sử dụng setTimeout và [Mẫu của Nick Fitzgerald] (http://fitzgeraldnick.com/weblog/35/) nhưng điều đó sẽ chỉ giúp tải các mục vào bộ điều khiển, chứ không phải việc cập nhật DOM của Ember mà trường hợp cụ thể của tôi là nơi chia sẻ của sư tử của thread thread đang xảy ra. – BrianB

+0

Ah, điểm công bằng. Điều đó có ý nghĩa hơn rất nhiều. –

1

Về nguyên nhân gốc rễ, @ChristopherSwasey là chính xác. Tôi đã hỏi một vài nhà phát triển Ember khác về điều này. Không có giải pháp nào, nhưng hai ý tưởng thú vị có thể giúp ích:

1) Một nhà phát triển đã báo cáo rằng anh đã gặp phải vấn đề này và đảm bảo hoạt ảnh bắt đầu trước khi thực thi javascript dài.

2) Một nhà phát triển khác đã đề xuất rằng việc sử dụng danh sách được ảo hóa là đường dẫn đúng để chỉ hiển thị các nút hiển thị. Tuy nhiên, tôi e là tôi không biết về một lớp danh sách ảo được mã hóa của Ember.

Hy vọng điều đó sẽ hữu ích.

+0

Tải gif trước bản cập nhật DOM từ ember không ảnh hưởng đến tôi. Không có bất kỳ tác động trong ví dụ js fiddle hoặc. – BrianB

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