Магистраль JS, как визуализировать конкретную страницу - PullRequest
0 голосов
/ 18 ноября 2011

Я только начинаю играть с Backbone JS, поскольку мы запускаем очень интенсивное JS-приложение, и я хочу следовать соглашению, чтобы проект не выглядел ужасным в последующие месяцы и годы.

Вероятно, это простой вопрос, но я не могу понять его.

У меня есть обычные действия / просмотры RESTful и т. Д., И я добавил еще одну информацию о вызове, чтобы поиграть с ней. Это правильно отображает страницу индекса при нажатии на соответствующую ссылку.

:javascript
  $(document).ready(function() {
  $("#client-clicker").click( function() {
    window.router = new Pm.Routers.ClientsRouter({clients: #{@clients.to_json.html_safe}});
    Backbone.history.start();
  });     
});

Теперь по вопросам:

Как это узнает, чтобы перейти к действию index of ClientsRouter?

Как указать действия по редактированию, показу или информации?

Заранее спасибо!

Я никогда не использовал «соглашение» для js, но основа js имеет смысл!

Обновление

Я обнаружил, что если я удаляю эту строку в Маршрутизаторе клиентов, по умолчанию индексация разрывается.

  routes:
"/new"      : "newClient"
"/index"    : "index"
"/:id/edit" : "edit"
"/:id"      : "show"
".*"        : "index" <----- #deleted and it broke
"/info"     : "info"

Я все еще не уверен, как попасть в конкретный вид.

1 Ответ

2 голосов
/ 18 ноября 2011

Когда вы звоните Backbone.history.start Backbone начинает наблюдать за изменениями местоположения, используя события pushstate или hashchange или в более старых браузерах, опрашивающих местоположение. Он также сразу запускает маршрут для текущего местоположения, сравнивая window.location.pathname с таблицей маршрутов.

В вашем случае он соответствует маршруту ". *". Я не уверен, какое местоположение находится в то время, когда это происходит, но этот маршрут будет соответствовать любому местоположению, поэтому он вызывает действие индекса.

Вы можете изменить местоположение и при необходимости вызвать действие, вызвав метод navigate на своем маршрутизаторе. например,

window.router.navigate('/new', true);

должен изменить местоположение и (поскольку вы передаете true во втором параметре) запустить действие newClient.

...