Je suis séparer de mon opinion et de routeur dans des fichiers séparés avec l'exigent. J'ai alors d'un main.js fichier qui instancie le routeur, et rend également par défaut de mon point de vue.
Mon routeur a afficher ('View/:id') et modifier ('Edit/:id') que les routes. Dans main.js lorsque j'instancie le routeur, je peux coder en dur routeur.naviguer('View/1', true) et la navigation fonctionne bien. Dans mon fichier de vue, quand je clique sur le lien modifier, je tiens à appeler routeur.naviguer (Voir/' + id, vrai), mais je ne suis pas sûr de savoir comment je doit faire.
J'ai eu du succès l'appel de la colonne vertébrale.l'histoire.naviguer (Voir/' + id, vrai), mais je ne pense pas que je devrais être en s'appuyant sur le mondial épine Dorsale de l'objet.
J'ai essayé de passage ({ routeur: appRouter }) de mon point de vue, de sorte que je pouvais l'utiliser.des options.routeur.naviguer(), mais qui ne fonctionnait pas pour moi.
Dans le cas où vous êtes curieux, voici un bouquet de code à partir de mon application:
Routeur:
define(['./View', './Edit'], function (View, Edit) {
return Backbone.Router.extend({
routes: {
'View/:id': 'view',
'Edit/:id': 'edit'
},
view: function (id) {
var model = this.collection.get(id);
var view = new View({ model: model });
view.render();
},
edit: function (id) {
var model = this.collection.get(id);
var edit = new Edit({ model: model });
edit.render();
}
});
});
Vue:
define(function () {
return Backbone.View.extend({
template: Handlebars.compile($('#template').html()),
events: {
'click .edit': 'edit'
},
render: function () {
//Create and insert the cover letter view
$(this.el).html(this.template(this.model.toJSON()));
$('#View').html(this.el);
return this;
},
edit: function () {
Backbone.history.navigate('Edit/' + this.model.id, true);
},
});
});