2011-11-21 21 views
8

Tôi cần giải pháp định tuyến phía máy khách để làm việc với ứng dụng Chrome. Tôi đã nghiên cứu một số và crossroads.js có vẻ như phù hợp. Khi tôi đưa nó vào tệp html của tôi, nó dường như không hoạt động; có nghĩa là, nếu tôi sử dụng mã nhưĐịnh tuyến phía máy khách. Làm thế nào nó hoạt động?

crossroads.addRoute('/news/{id}', function(id){ 
    alert(id); 
}); 
crossroads.parse('/news/123'); 

, các cảnh báo trang '123' nhưng nếu tôi gõ '/ news/321' trong thanh url của trình duyệt, nó Preforms hành động mặc định của trình duyệt, thay vì cảnh báo '321 '. Tôi đang làm gì sai. (Ngoài ra, tôi nhận ra rằng tiêu đề là rộng, nhưng tôi tin rằng những khó khăn mà tôi gặp phải với crossroads.js là tổng quát hơn so với crossroads.js nói riêng. Ví dụ:

+0

khi bạn đi đến/news/123 nó hướng đến một trang thực sự? hoặc là một phần của một thẻ neo cho ajax? – topherg

+0

@cgoddard Tôi đang sử dụng Chrome và Google tìm kiếm "/ news/123" – danwoods

+0

bằng tên miền ... – topherg

Trả lời

8

Sử dụng Hasher (bởi cùng tác giả).

Tài liệu trên trang Crossroads cho bạn biết rằng bạn cần phải sử dụng Hasher, (vì nó sẽ được sử dụng để giám sát thanh widow.location.).

Vì vậy, bạn cũng sẽ cần phải sử dụng Hasher và khởi tạo nó, sau đó bạn có thể thêm tuyến đường "Ngã tư" của mình vào Hasher để bắt đầu theo dõi các tuyến đường cụ thể đó.

//setup crossroads 
crossroads.addRoute('foo'); 
crossroads.addRoute('lorem/ipsum'); 
crossroads.routed.add(console.log, console); //log all routes 

//setup hasher 
hasher.initialized.add(crossroads.parse, crossroads); //parse initial hash 
hasher.changed.add(crossroads.parse, crossroads); //parse hash changes 
hasher.init(); //start listening for history change 

//update URL fragment generating new history record 
hasher.setHash('lorem/ipsum'); 

http://millermedeiros.github.com/crossroads.js/

+0

Tôi không tin rằng Hasher có bất kỳ việc sử dụng nào cho OP. – ericosg

+0

whatch out cho https://github.com/millermedeiros/crossroads.js/issues/47 prototype.apply có sai loại – roo2

6

Lệnh parse nói với ngã tư để có một cái nhìn tại các chuỗi và làm một hành động dựa trên nó.

Vì vậy, trong trường hợp crossroads.parse('/news/123');, nó sẽ luôn sử dụng /news/123.

Vì bạn muốn ngã tư để phân tích những gì bạn có trong thanh địa chỉ trình duyệt, bạn sẽ cần phải sử dụng giá trị đó trong phương pháp phân tích cú pháp:

crossroads.parse(document.location.pathname); 
+4

cách khác, để bao gồm chuỗi truy vấn của bạn, 'crossroads.parse (document.location.pathname + document.location .search) ' – casey

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