2012-02-20 34 views
7

Đây có thể là một câu hỏi cực kỳ dễ, theo quan điểm, tôi kết hợp sự kiện 'nhấp' với một nút, khi sự kiện đó được nhấp, tôi muốn chuyển hướng đến một trang hoàn toàn mới (ví dụ: không phải là tuyến đường).xương sống đi đến một trang khác

ví dụ:

events : {  
    "click .button" : 'redirect' 
}, 
redirect : { 
    window.location('otherlink'); 
} 

Tôi có thể sử dụng window.location, nhưng dường như đó là cách sai? bất kỳ ý tưởng đánh giá cao?

Trả lời

2

Tôi chỉ đơn giản sử dụng đơn giản <a href="otherlink">Link Title</a>. Nếu liên kết là động, tôi sẽ dựa vào Chế độ xem để hiển thị liên kết và quản lý trạng thái của anh ấy và href.

Nếu bạn cần phải làm điều gì đó trước khi phép người sử dụng đi sử dụng trang thứ cấp và xử lý sự kiện mà không có sự event.preventDefault() hoặc tránh để trở false.

13

Xương sống có 'bộ định tuyến' (về cơ bản những gì tôi đã biết là bộ điều khiển). Bạn có thể sử dụng nó để thực hiện điều hướng. Ví dụ:

var MyApp = new Backbone.Router(); 
MyApp.navigate('newPage', {trigger: true}); 

kích hoạt đảm bảo sự kiện được ném trong trường hợp bạn đang sử dụng sự kiện được cho biết.

Bạn có thể kết hợp bộ định tuyến với 'lịch sử' của Backbone và xây dựng một ứng dụng một trang tuyệt vời rất dễ dàng.

Chỉnh sửa: Không sao, tôi chỉ đọc lại rằng bạn không muốn sử dụng tuyến đường. Hai xu của tôi - tạo một trình bao bọc để thực hiện điều hướng cho bạn. Tôi chỉ cần phải refactor một ứng dụng javascript khá lớn một vài tuần trước, lấy ra một trăm hoặc hơn window.locations để nó có thể được kiểm tra đơn vị. Không vui lắm. Tức là:

MyApp = { 
    navigate: function (url) { window.location = url; } 
} 

Bây giờ bạn thực sự có thể làm kiểm tra đơn vị, như bạn có thể ghi đè MyApp.navigate với một cái gì đó mà không làm gì khi gọi. Bạn cũng có thể thêm vào logic nghiệp vụ nếu cần .. hoặc bộ lọc .. hoặc bất kỳ thứ gì khác .. mà không cần làm phiền phần còn lại của ứng dụng. Ví dụ: nếu url nằm ngoài trang web, hãy mở url đó trong cửa sổ mới thay vì chỉ hiển thị trong cùng một trang.

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