2013-05-10 32 views
6

Trong ứng dụng Ember của tôi, làm thế nào tôi có thể chuyển đến một neo HTML bên trong một trong các mẫu Handlebars của tôi? I created a jsFiddle that shows what I want to accomplish.Sử dụng các neo HTML trong Ember.js

Bối cảnh
Mô hình điều hướng của Ember thông qua ứng dụng sử dụng neo HTML.

Tôi có yêu cầu sau: khi người dùng nhấp vào một helper tay lái linkTo để điều hướng đến một mới đường đến, trình duyệt sẽ tự động di chuyển đến một neo bên trong mẫu tay lái liên quan đến đó mới đường đến.

+0

loại [url] (http://emberjs.com/guides/routing/specifying-the-location-api/) bạn đang sử dụng? Theo mặc định, Ember sử dụng hàm băm (#), sẽ va chạm với các neo. Về mặt kỹ thuật, bạn có thể sử dụng scrollspy (hoặc một cái gì đó tương tự) nếu bạn thực hiện các url khách hàng [hashbang (#!)] (Http://stackoverflow.com/questions/14929170/hashbang-urls-using-ember-js). – MilkyWayJoe

+0

@MilkyWayJoe Tôi đang sử dụng điều hướng dựa trên băm mặc định của Ember. Tôi vừa thử điều hướng dựa trên lịch sử, nhưng nó không hoạt động trong cả ứng dụng của riêng tôi và jsFiddle của tôi đã đề cập ở trên (Ngoại lệ "' Không có tuyến đường nào khớp với URL '/ _display /' "') ... cảm ơn bạn đã các đề xuất scrollcly và hashbang mà bây giờ tôi sẽ điều tra. – Abdull

+0

bản sao có thể có của [liên kết anchor Ember.js] (http://stackoverflow.com/questions/18445661/ember-js-anchor-link) – givanse

Trả lời

0

Sử dụng jquery để cuộn đến một phần cụ thể.

$('html,body').animate({ 
    scrollTop: $("a[name='someAnchor']").offset().top 
}); 

Tham khảo this SO answer tương tự.

Để cuộn đến neo sau khi chế độ xem được hiển thị, hãy ghi đè didInsertElement trong định nghĩa của bạn cho Chế độ xem của tuyến đường của bạn.

Tham khảo this SO answer liên quan tương tự.

App.LonglistView = Ember.View.extend({ 
    didInsertElement: function() { 
     // Place the scroll to anchor code here. 
     $('html,body').animate({ 
      scrollTop: $("a[name='someAnchor']").offset().top 
     }); 
    } 
}); 

Đây là a working example trong jsfiddle (Tôi đã không được thêm bất kỳ mô hình dữ liệu cho rõ ràng)

EDIT: Bạn cũng có thể sử dụng cách phi jquery để làm di chuyển

document.getElementsByTagName('a')[name='someAnchor'].scrollIntoView() 

Các jsfiddle example cho cùng.

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