Подтвердить что ты не робот

Backbone.js - переход на маршрут после события "click" в представлении

Мой "вид" настроен, как показано ниже. простой.

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

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

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

И у меня есть маршрутизатор

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();

Теперь, когда я нажимаю ItemView, он должен запускать метод "display", и я хочу, чтобы метод отображения передал меня на маршрут, указанный в маршрутах "item".

Возможно ли это? Я думал, что функция "навигации" будет работать, но это не так. Как я мог достичь этого?

4b9b3361

Ответ 1

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

Второй параметр должен быть равен true.

В документации на базовую станцию:

navigaterouter.navigate(фрагмент, [triggerRoute]) Всякий раз, когда вы достигаете точки в своем приложении, которую хотите сохранить в качестве URL-адреса, перейдите по ссылке, чтобы обновить URL-адрес. Если вы хотите также вызвать функцию маршрута, пропустите triggerRoute.

Ответ 2

Или вы можете сделать это непосредственно из html, если вы используете тег "<a> ".

Пример:

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

Он также работает, я предпочитаю этот путь, когда, конечно, возможно.