Backbone.js поиск с помощью строк запроса - PullRequest
0 голосов
/ 06 июля 2011

Я только начал смотреть на Backbone.js. Теперь я не хочу создавать простой поиск, похожий на Google, где URL обновляется "на ходу". Поэтому, если вы отправляете форму, я хочу обновить URL до http://www.site.com/#/search/I-searched-for-something.

Я ценю каждый ответ:)

Ответы [ 2 ]

5 голосов
/ 06 июля 2011

Если я понимаю вопрос, вам нужен произвольный URL, который включает в себя ваш поисковый термин как часть URL. И я подозреваю, что ваша проблема в том, что вы не понимаете, как это сделать с архитектурой routes.

Маршруты - это не что иное, как регулярные выражения:

var MyController = Backbone.Controller.extend({
    routes: {
        RegExp('^search/(.*)$'): "handle_search"
    },

    handle_search: function(search_term) {
        search_term = decodeURIComponent(search_term);
        /* Do something ajaxy with the search term in the search model,
           which in turn triggers the search view to refresh... */
    }
});

После этого вы бы применили обработчик click к кнопке в форме поиска (или, возможно, менеджер keypress==13 для самого поля поиска), который вместо того, чтобы что-то делать, просто устанавливает window.location.hash = escapeURIComponent($('#search_field').val())

Это окольный путь, но он выполняет свою работу. Ваши URL будут безобразными со всеми% XX в них, но все они будут добавлены в закладки, что является единственной причиной сделать что-то подобное.

1 голос
/ 06 сентября 2011

Эмиль, я думаю, у меня есть аналогичный вариант использования, когда пользователи могут выбирать и затем запускать поиск. Я хочу, чтобы этот поиск обновлялся в адресной строке, чтобы его можно было добавить в закладки. Для обновления адресной строки я планировал использовать Backbone navigate

Для нескольких поисковых терминов я планирую 1. установить их в качестве значений в своей коллекции, а затем вызвать выборку в коллекции 2. запросить в коллекции URL-адрес и обновить адресную строку с помощью навигационной системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...