Devrait Backbone.js saisir les paramètres GET à partir de l'URL?
Je suis en train de mettre en œuvre une fonction de recherche pour mon site. Lorsque l'utilisateur tape un terme de recherche foobar
dans un input
boîte et le soumet, il est redirigé vers http://mydomain.com/search?query=foobar
.
Problème:: Comment dois-je saisir les paramètres GET query
à partir de l'URL, et de l'envoyer à l'arrière-plan et d'obtenir un tableau de résultats à l'arrière comme une réponse JSON? Même si je dois le faire de cette façon?
Ma tentative ci-dessous ne prend même pas la cause de la search
fonction d'être déclenchée.
Routeur
var AppRouter = Backbone.Router.extend({
routes: {
'search?query=:query': 'search'
//... and some other routes
},
search: function(query) {
this.photoList = new SearchCollection();
var self = this;
this.photoList.fetch({
data: {query: query},
success: function() {
self.photoListView = new PhotoListView({ collection: self.photoList });
self.photoListView.render();
}
});
}
});
var app = new AppRouter();
Backbone.history.start({
pushState: true,
root: '/'
});
OriginalL'auteur Nyxynyx | 2012-08-07
Vous devez vous connecter pour publier un commentaire.
Il y a eu plusieurs questions déposées contre épine Dorsale de cette question. Il existe déjà un plugin qui fonctionne bien pour ce:
https://github.com/jhudson8/backbone-query-parameters
Sinon, je suis actuellement à l'aide de paramètres de chaîne de requête dans un simulacre d'API qui correspond à l'épine Dorsale de la correspondance de route. Ressemble à quelque chose comme ceci
Route
"/api/v2/application/:query"
Requête
À votre question comment êtes-vous rediriger vers
index.html
à l'appui depushState
?domain.com
,domain.com/something
,domain.com/search
et le routeur va exécuter la fonction correcte de rendre éléments sur la page. L'interaction avec des liens/boutons/onglets sur la pageapp.navigate()
à un autre URI segment. Est-ce répondre à la question sur la redirection versindex.html
à l'appui depushState
?Non, il n'est pas. Je veux savoir comment vous configurez votre serveur pour pushState, ce n'est pas automatique. Vous avez spécifiquement besoin pour configurer votre serveur web pour gérer autrement 404 de rediriger les requêtes vers index.html.
J'ai un routeur dans mon framework PHP qui vérifie pour voir si la route est valide avant le rendu de la page contenant backbone.js. Si l'URL n'est pas valide, le PHP routeur redirige vers une page 404.
OriginalL'auteur tbranyen
J'ai frappé cette même question, et envisagée à l'aide de la dorsale-requête-paramètres, mais qui devrait être considéré comme généralement une approche incorrecte.
La chaîne de requête d'url n'est pas destiné à l'extrémité avant. Ils sont envoyés au serveur et forcer un rafraîchissement lors de la navigation d'page.html à la page.le html?=quelque chose quelque chose.
Vous devriez être en utilisant des fragments de hachage à la place. c'est à dire http://www.example.com/ajax.html#key1=value1&cle2=valeur2 puis juste obtenir ces valeurs normales de la dorsale voie et de construire votre demande params.
Voir https://github.com/jashkenas/backbone/issues/891, https://developers.google.com/webmasters/ajax-crawling/docs/specification, http://tools.ietf.org/html/rfc3986#section-3.5
OriginalL'auteur Gerard
Vous pouvez toujours lire l'URL via jQuery URL du plugin. Il fonctionne bien.
https://github.com/allmarkedup/jQuery-URL-Parser
OriginalL'auteur ericbae
Il y a très peu de cas où vous avez besoin de lire l'URL et de l'extrait de l'OBTENIR params. Je pense que vous faire des choses mauvaises et voici mes options:
1) si vous avez juste une page dans votre application (simple page de l'application), vous pouvez afficher les résultats comme ils dans votre
input
champ ou après ils ont frappésubmit
2) si vous êtes rediriger l'utilisateur vers une autre page, cela signifie que vous pouvez bootstrap de données de sorte que, après le chargement de la page
backbone
juste pour le rendu de vos résultats et de seulement faire d'autres demandes si vous modifiez votre mot de recherche3) vous pouvez avoir un
javascript
variable est initialisée au chargement de la page directement à partir du serveur où travaille avec params est probablement plus facileOriginalL'auteur Claudiu Hojda