2011-09-22 5 views
30

"Chế độ xem" của tôi được thiết lập như bên dưới. đơn giản.Backbone.js - điều hướng đến tuyến đường sau sự kiện "nhấp" trên một chế độ xem

var ItemView = Backbone.View.extend({ 
    tagName : "li", 

    events : { 
    "click" : "display" 
    }, 

    display : function() { 
    //app.navigate('item'); // take me to my route! 
    } 
}); 

Và tôi có router của tôi

var App = Backbone.Router.extend({ 

    routes: { 
    "" : "index", 
    "item" : "view_item" 
    }, 

    index: function() { 
    alert('hi!'); 
    }, 

    view_item: function() { 
    alert('bye!'); 
    } 
}); 

app = new App(); 
Backbone.history.start(); 

Bây giờ, khi tôi bấm vào ItemView, cần chạy phương pháp "hiển thị" và tôi muốn phương pháp hiển thị để đưa tôi đến con đường tôi đã chỉ định trong các tuyến đường "mục".

Điều này có khả thi không? Tôi nghĩ rằng "điều hướng" chức năng sẽ làm việc, nhưng nó không. Làm thế nào tôi có thể đạt được điều này?

Trả lời

49
display : function() { 
    app.navigate('item', true); 
    } 

Bạn cần tham số thứ hai được đặt thành true.

Từ các tài liệu Backbone:

navigaterouter.navigate (fragment, [triggerRoute]) Bất cứ khi nào bạn đạt đến một điểm nào đó trong ứng dụng của bạn mà bạn muốn lưu dưới dạng URL, hãy gọi điều hướng để cập nhật URL. Nếu bạn cũng muốn gọi hàm tuyến đường, hãy kích hoạt triggerRoute.

+7

Một cách khác để thực hiện tương tự và tương ứng với tài liệu chính: 'app.navigate ('item', {trigger: true}); ' – Daan

+3

Nếu bạn không có bộ định tuyến' app' trong phạm vi, bạn có thể sử dụng 'Backbone.history.navigate (url, options)' – LeeGee

0

Hoặc bạn có thể làm điều đó trực tiếp từ html, nếu bạn đang sử dụng thẻ "< a>".

dụ:

<a href="#item">Show Itens</a> 

Nó cũng làm việc, tôi thích cách này khi tất nhiên là có thể.